全局临时表(GTT)是Oracle中的一种表,用于在会话或事务期间临时存储数据。其结构持久,但数据瞬态,仅对插入数据的会话可见。GTT可设置为在事务结束时删除数据或会话结束时保留数据,适合存储中间结果而不影响永久表。
在Oracle数据库中,虚拟表不存储实际数据,而是提供数据的逻辑视图。包括视图、物化视图、全局临时表和内联视图。视图通过SELECT查询定义,物化视图存储数据快照以提高查询性能,全局临时表的数据是会话特定的,内联视图是查询中的子查询。虚拟表简化查询、抽象数据库结构并提高安全性。
PostgreSQL没有内置支持全局临时表的功能,但有几个扩展可提供此功能。其中一个扩展是PGTT,允许用户创建类似于Oracle的全局临时表。另一个选择是使用基于SQL的扩展,如pg_global_temp_tables和Global-Temporary-Tables-For-PG。这些扩展提供了在事务之外创建临时表和支持临时表上的索引等功能。然而,它们可能无法解决目录表膨胀的问题。pgtt扩展稳定且功能齐全,但尚未由PostgreSQL全球开发组分发为二进制包。总体而言,在PostgreSQL中实现全局临时表的最佳选择是使用这些扩展或重写应用程序以使用本地临时表。
使用SQL DML操作中的临时表有几个好处。Oracle数据库的“全局临时表”在处理复杂连接时解决了性能问题。Google发布了适用于Google CloudSQL和AlloyDB的Postgres产品的扩展“pgtt”。在自管理实例中,“pgtt”非常容易使用。
完成下面两步后,将自动完成登录并继续当前操作。