gpt4 book ai didi

sql - WITH 是否创建一个临时表,如果可以,它可以安全地用于多个线程吗?

转载 作者:行者123 更新时间:2023-11-29 12:27:42 26 4
gpt4 key购买 nike

在 Postgres 中,WITH 子句是否创建了一个临时表?如果可以,它可以安全地用于多线程吗?

即WITH 下面的 x,如果 CTE 在多个不同的线程中运行,这可以吗?

WITH x AS (
SELECT psp_id
FROM global.prospect
WHERE status IN ('new', 'reset')
ORDER BY request_ts
LIMIT 1
)
UPDATE global.prospect psp
SET status = status || '*'
FROM x
WHERE psp.psp_id = x.psp_id
RETURNING psp.*;

最佳答案

没有。

带有 CTE 的查询会创建一个表的内部临时表示,该表仅对查询本身可见。

我也没有看到在多个线程中使用 TEMPORARY 表的方法,因为临时表仅在同一 session 中可见。

下一个最好的事情是 UNLOGGED table .仍然比普通餐 table 便宜,但不如上面任何一个便宜。

与 CTE 不同,您可以创建索引和 ANALYZE TEMPORARYUNLOGGED 表,不过 - 这可能对有很大帮助 具有巨大的基数但不是您的示例 (LIMIT 1)。

关于sql - WITH 是否创建一个临时表,如果可以,它可以安全地用于多个线程吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18063949/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com