【问题标题】:EXISTS subquery: SELECT 1 or SELECT * FROM X performant in Postgres? [duplicate]EXISTS 子查询:SELECT 1 或 SELECT * FROM X 在 Postgres 中表现出色? [复制]
【发布时间】:2016-11-21 10:07:51
【问题描述】:

写是不是更好(在性能、速度等方面)

SELECT * FROM a WHERE (EXISTS (SELECT * FROM b))

SELECT * FROM a WHERE (EXISTS (SELECT 1 FROM b))

在 PostgreSQL 中?

附言 This question 回答了我对 MS SQL Server 的问题,但是 PostgreSQL 呢?

【问题讨论】:

    标签: postgresql exists


    【解决方案1】:

    the documentation:

    由于结果仅取决于是否返回任何行,并且 不在这些行的内容上,子查询的输出列表是 通常不重要。

    【讨论】:

    • unimportant 是什么意思。它们在语义上显然是相同的,但我想知道一个是否比另一个性能更好(我不确定如何进行测试)
    • 的上下文中,子查询一般只会执行足够长的时间来确定是否至少返回一行,而不是一直到完成(对于文档)我明白没有区别。你可以用explain analyse 测试它——我有完全相同的执行计划。
    • 谢谢@klin,很高兴知道!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-31
    • 2021-12-02
    • 2020-08-15
    • 1970-01-01
    • 2019-07-22
    相关资源
    最近更新 更多