postgresql 中的临时表是否在所有客户端会话中可见?

sud*_*ngh 9 sql postgresql performance join postgresql-performance

我想创建一个临时表,以便能够将它连接到几个表,因为将这些表与建议的临时表的内容连接起来需要很多时间(获取临时表的内容很耗时。重复它一遍又一遍地花费越来越多的时间)。当我的需要完成时,我将删除临时表。我想知道这些临时表是否在其他客户端会话中可见(我的要求是让它们仅对当前客户端会话可见)。我正在使用 postgresql。如果您能为我正在考虑的解决方案提出更好的替代方案,那就太好了。

Lau*_*lbe 7

请阅读文档

临时表仅在当前会话中可见,并在数据库会话结束时自动删除。

如果指定ON COMMIT,临时表将在当前事务结束时自动删除。

如果您需要临时表的良好表统计信息,则必须ANALYZE显式调用,因为这些统计信息不会自动收集。


Eva*_*oll 6

那么 PostgreSQL 就是适合您的数据库。临时表做得比标准好。从文档中

虽然语法CREATE TEMPORARY TABLE类似于 SQL 标准,但效果并不相同。在标准中,临时表只定义一次,并在需要它们的每个会话中自动存在(从空内容开始)。PostgreSQL 相反要求每个会话CREATE TEMPORARY TABLE为每个要使用的临时表发出自己的命令。这允许不同的会话为不同的目的使用相同的临时表名,而标准的方法限制给定临时表名的所有实例具有相同的表结构。