【问题标题】:Does INNER JOIN performance depends on order of tables?INNER JOIN 性能是否取决于表的顺序?
【发布时间】:2013-11-05 21:24:29
【问题描述】:

我在调整一个存储过程时突然想到一个问题。让我问一下-

我有两张桌子,table1 和 table2。 table1 包含大量数据,table2 包含较少数据。这两个查询在性能方面是否有任何区别(我正在更改表的顺序)?

查询1:

SELECT t1.col1, t2.col2
FROM table1 t1
INNER JOIN table2 t2
ON t1.col1=t2.col2

查询2:

SELECT t1.col1, t2.col2
FROM table2 t2
INNER JOIN table1 t1
ON t1.col1=t2.col2

我们使用的是 Microsoft SQL Server 2005。

【问题讨论】:

  • 不在任何健全的数据库系统中。即使您打算更改表格的顺序。出于这个原因,所有现代数据库都会保留有关数据量的统计信息。
  • 别名对查询没有影响。你有什么顾虑?
  • 对不起,我已经编辑了我的问题。请再次检查我的问题。
  • 您还应该指定您正在使用的 DBMS。性能取决于查询优化器的质量,因此很难概括所有数据库。

标签: sql sql-server performance sql-server-2005


【解决方案1】:

别名和连接中表的顺序(假设它是INNER JOIN)不会影响最终结果,因此不会影响性能,因为在执行查询时顺序会被替换(如果需要)。

您可以在此处阅读有关关系代数的更多基本概念: http://en.wikipedia.org/wiki/Relational_algebra#Joins_and_join-like_operators

【讨论】:

    猜你喜欢
    • 2020-07-26
    • 1970-01-01
    • 2016-05-18
    • 1970-01-01
    • 2021-04-01
    • 2011-01-11
    • 1970-01-01
    • 2023-03-17
    • 2013-02-05
    相关资源
    最近更新 更多