哪一个更快?
SELECT FROM A INNER JOIN B ON A.ID = B.ID
...或:
SELECT FROM A , B WHERE A.ID = B.ID
答案 0 :(得分:22)
我认为一个比另一个更快,但是使用一个比另一个更好:
SELECT (fields)
FROM A
INNER JOIN B ON A.ID = B.ID
绝对是表达它的首选方式(并且符合连接语法的ANSI SQL标准)。它更清楚,对于观察者来说更明显的是这里发生了什么。
始终使用这种语法 - 它更简单,更清晰!
PS:SQL大师Aaron Bertrand似乎同意:-) Bad habits to kick: using old-style JOINs
答案 1 :(得分:6)
测量,不要猜测。
某些DBMS'将比隐式连接更快地运行显式连接,但它完全取决于DBMS本身(我使用的那个足够智能,可以全速运行)。
我们有DBA的原因。它们旨在根据实际情况监控和调整数据库的性能,而不是关于事情可能执行的一些(错误)概念。
这是因为性能会根据表格中的数据而变化。
因此,您应该不担心这两个查询的执行速度,直到出现性能问题。使用您的最佳猜测(使用索引等),但要注意生产中的实际性能,并进行调整。
另见here。
答案 2 :(得分:5)
它们是等价的,也不应该比另一个快。最好的方法是使用EXPLAIN
。
答案 3 :(得分:4)
测量执行所需的时间。这很大程度上取决于太多参数,毫无疑问可以回答。
答案 4 :(得分:2)
检查两个查询的执行计划,从中得出结论。
答案 5 :(得分:2)
实际上具体来说,它们都不是更快。它们根本不会运行。
您至少需要在SELECT子句中指定一个列或常量甚至*。
答案 6 :(得分:0)
他们俩都不是同样快吗?因为它们基本上转化为同样的东西......
如果您想确切知道可以设置一个简单的测试用例并执行它。