哪一个更快?

时间:2009-10-08 08:08:35

标签: sql performance

哪一个更快?

SELECT FROM A INNER JOIN B ON A.ID = B.ID

...或:

SELECT FROM A , B WHERE A.ID = B.ID

7 个答案:

答案 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)

他们俩都不是同样快吗?因为它们基本上转化为同样的东西......

如果您想确切知道可以设置一个简单的测试用例并执行它。