DUAL table

Oracle 提供的一个虚拟表,PostgreSQL 中不存在该表

DUAL 是 Oracle 提供的一个虚拟表,用于在求值不需要实际引用数据库对象的表达式时使用,例如:

SELECT 1 FROM DUAL

PostgreSQL 不提供与 DUAL 表等效的表,因为它能够在不引用数据库对象的情况下求值表达式,例如:

SELECT 1

兼容性

orafce 实现了一个 DUAL 表,以帮助从 Oracle 迁移,创建方式如下:

CREATE VIEW public.dual AS SELECT 'X'::varchar AS dummy;

(来源)

PostgreSQL 中的隐式实现

2018 年,Tom Lane 提出了一个潜在的用例,即优化器可以通过在优化器/重写器中插入一个虚拟表来受益,这将简化各种代码路径:“SELECT ... FROM DUAL”并不像看起来那么愚蠢。这随后被实现为 PostgreSQL 12 中的提交 4be058fe

分类

迁移, 优化器

另请参阅

orafce

反馈

请在此处提交关于“DUAL table”的任何评论、建议或更正。