【发布时间】:2020-04-14 06:54:55
【问题描述】:
在 SQL 中,JOIN 与 WHERE 的顺序对查询的性能有多大影响?
a) SELECT […] FROM A JOIN ( SELECT […] FROM B WHERE CONDITION )开启 […]
b) SELECT [...] FROM A JOIN ( SELECT [...] FROM B ) ON [...] WHERE CONDITION
我的内心感觉告诉我选项 a) 应该更高效:如果我们先执行连接,然后运行 where,它的性能似乎比首先在一个表上运行 where 并从结果中执行 a加入。但我不确定,因为这取决于 SQL 库本身的内部优化。
很高兴知道 MySQL 和 MySQL 的行为是否相同
PostgreSQL,以及它是否依赖于任何其他装饰器,如 group by 或 order by。
【问题讨论】:
-
第二个查询没有意义。为什么把它放在子查询中?只需加入对 B
-
相信优化器,写出通俗易懂的SQL。如有疑问,请比较执行计划。
-
这两个选项看起来都不是特别好
标签: mysql sql postgresql join where-clause