Sql 哪一个更快?

Sql 哪一个更快?,sql,performance,Sql,Performance,哪一个更快 SELECT FROM A INNER JOIN B ON A.ID = B.ID …或: SELECT FROM A , B WHERE A.ID = B.ID 测量执行所需的时间。这在很大程度上取决于太多的参数,毫无疑问无法回答。测量执行所需的时间。这在很大程度上取决于太多的参数,毫无疑问无法回答。它们不是都一样快吗?因为它们基本上是一回事 如果您想确定,您可能可以设置一个简单的测试用例并执行它。它们不是都一样快吗?因为它们基本上是一回事 如果您确实想知道,您可能可以设置一个

哪一个更快

SELECT FROM A INNER JOIN B ON A.ID = B.ID
…或:

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

测量执行所需的时间。这在很大程度上取决于太多的参数,毫无疑问无法回答。

测量执行所需的时间。这在很大程度上取决于太多的参数,毫无疑问无法回答。

它们不是都一样快吗?因为它们基本上是一回事


如果您想确定,您可能可以设置一个简单的测试用例并执行它。

它们不是都一样快吗?因为它们基本上是一回事


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

我不认为一个比另一个快,但一个比另一个好:

SELECT (fields)
FROM A
INNER JOIN B ON A.ID = B.ID
绝对是表达这一点的首选方式(并且符合ANSI SQL联接语法标准)。更清楚的是,观察者更清楚这里到底发生了什么

始终使用这种语法而不是其他语法-它只是更容易和更清楚


PS:SQL专家Aaron Bertrand似乎同意:-)

我不认为一个比另一个快,但一个比另一个好用:

SELECT (fields)
FROM A
INNER JOIN B ON A.ID = B.ID
绝对是表达这一点的首选方式(并且符合ANSI SQL联接语法标准)。更清楚的是,观察者更清楚这里到底发生了什么

始终使用这种语法而不是其他语法-它只是更容易和更清楚


PS:SQL大师Aaron Bertrand似乎同意:-)

它们是等价的,两者都不应该比另一个更快。最好的方法是使用
解释

它们是等价的,两者都不应该比另一个快。最好的了解方法是使用
解释

检查两个查询的执行计划,从中得出结论。

检查两个查询的执行计划,从中得出结论。

衡量,不要猜测

有些DBMS运行显式连接的速度比隐式连接快,但这完全取决于DBMS本身(我使用的DBMS足够智能,可以全速运行这两种连接)

我们有DBA是有原因的。它们的目的是根据实际情况监控和调整数据库的性能,而不是一些(错误的)概念

这是因为性能根据表中的数据而变化

因此,在出现性能问题之前,您不应该担心这两个查询的执行速度。使用您的最佳猜测(使用索引等),但注意生产中的实际性能,并进行调整

另请参见。

测量,不要猜测

有些DBMS运行显式连接的速度比隐式连接快,但这完全取决于DBMS本身(我使用的DBMS足够智能,可以全速运行这两种连接)

我们有DBA是有原因的。它们的目的是根据实际情况监控和调整数据库的性能,而不是一些(错误的)概念

这是因为性能根据表中的数据而变化

因此,在出现性能问题之前,您不应该担心这两个查询的执行速度。使用您的最佳猜测(使用索引等),但注意生产中的实际性能,并进行调整


另请参见。

实际上更具体地说,它们都不是更快的。他们根本不会跑


您至少需要在SELECT子句中指定一个列或常量,甚至是*。

实际上,具体来说,它们都不是更快的。他们根本不会跑


您至少需要在SELECT子句中指定一列或常量,甚至是*。

我不知道。为什么不试着同时运行它们呢?为什么你会考虑使用17年过时的语法(第二版)?使用第二种语法是不好的做法。它更可能通过意外的交叉连接返回错误的结果,更难维护,也更难读取。它们是等价的。第一种是使用ANSI连接语法;另一个是非ANSI连接语法,我不知道。为什么不试着同时运行它们呢?为什么你会考虑使用17年过时的语法(第二版)?使用第二种语法是不好的做法。它更可能通过意外的交叉连接返回错误的结果,更难维护,也更难读取。它们是等价的。第一种是使用ANSI连接语法;另一种是非ANSI连接语法。请始终使用此语法,并且永远不要回答问题;-)需要一些努力才能不投反对票;-)我说我不认为在表现上有任何区别——第一句话+1因为这更清楚,也确保连接条件和where子句不会混淆。此外,连接顺序可以以更明确的方式进行控制。马克,希望我能对自己无法阅读的评论投反对票;-)Dean J还指出,旧式语法在复杂查询中更容易出错,因为在复杂查询中,您可能会意外地获得交叉连接。此外,右侧和左侧联接旧式语法(=或=)在SQl server中无法正常工作,因此不应使用。请始终使用此语法,并且永远不要回答问题;-)需要一些努力才能不投反对票;-)我说我不认为在表现上有任何区别——第一句话+1因为这更清楚,也确保连接条件和where子句不会混淆。此外,连接顺序可以以更明确的方式进行控制。马克,希望我能对自己无法阅读的评论投反对票;-)Dean J还指出,旧式语法在复杂查询中更容易出错,因为在复杂查询中,您可能会意外地获得交叉连接。此外,右连接和左连接旧式语法(=或=)在SQl server中无法正常工作,因此不应使用。我不会将它们称为“等效”,因为where子句join与