sql - SQL中Join语句的性能

标签 sql sql-server-2008 inner-join sqlperformance query-tuning

我正在使用 SQL Server 2008-R2,我需要使用多个表联接。在这种情况下,使用 WHERE 语句或使用 INNER JOIN 和 ON 语句时,哪个查询具有更好的时间性能?这两个语句都使用 AND 运算符来表示多个条件。

我想知道是否还有针对该问题的一些相关查询调整。

上述选项的示例代码:

1)

SELECT *

FROM T1,T2,T3....

WHERE T1.ID = T2.ID AND

      T1.ID = T3.ID AND

      ....

2)

SELECT *

FROM T1 

     INNER JOIN T2

        ON T1.ID = T2.ID

     INNER JOIN T3

        ON T1.ID = T3.ID

     INNER JOIN .....

发送。

最佳答案

快速回答:不,性能没有差异。

这是一个相当常见的问题,这里有很好的解释:INNER JOIN ON vs WHERE clause

SQL Server 中的查询优化引擎会自动将这两个查询转换为相同的方法来检索结果。

查询性能的最大差异是联接的顺序以及每个新联接过滤的数据量。最具选择性的连接语句(过滤掉最多的结果)应该首先出现(尽可能取决于您要连接的表)。

关于sql - SQL中Join语句的性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5618393/

相关文章:

SQLite3 API 的 C++ 包装器 - sqlite3pp 的替代品

php - SQL:论坛按行为排序(在 Codeigniter 中)

sql-server - WHERE IN (SELECT NonExistingColumnName) 导致意外行为

c# - 为了避免 SQL Server 中的 SQL 注入(inject)攻击,应从字符串中转义哪些字符?

mysql - INNER JOIN 的问题我没有得到想要的结果

mysql - 我如何编写这个涉及连接的简单 sql 语句?

c# - 如何将 unicode(阿拉伯语)字符插入 SQL Server 数据库

SQL 服务器 : trigger firing every time

Sql Server 脚本生成器

php - mysql 上的内部连接只适用于一列