【发布时间】:2015-09-16 11:33:19
【问题描述】:
我只是希望有人能告诉我以下 2 个查询之间的效率是否存在差异。
查询 1
SELECT A.CUSTOMER, B.INVOICE FROM CUS A
JOIN INV B ON
A.CUS_ID = B.CUS_ID
WHERE
B.INV_DATE > '2015-09-06'
查询 2
SELECT A.CUSTOMER, B.INVOICE FROM CUS A, INV B
WHERE A.CUS_ID = B.CUS_ID AND
B.INV_DATE > '2015-09-06'
我很确定查询 1 会更有效,但我希望有人可以确认。
【问题讨论】:
-
只考虑使用第一个版本,它是符合 ANSI 的显式
JOIN语法。甚至没有理由考虑查询的第二个版本。两者应该有相同的执行计划。 -
@GordonLinoff 问题是查询 2 已经存在于我正在维护的遗留代码中,我希望将其更新为查询 1。问题是,我们通常需要证明“修复”已经作品。如果更改提高了性能,那将是不费吹灰之力。
标签: sql performance join where-clause