admin

没有提示指令的直接联接中的表顺序是否会影响性能?

sql

所有基于SQL的RDBMS(版本长达10年):

直接连接查询(不带提示指令)中的表顺序是否对最佳性能和内存管理有所不同?我听说最后一个联接应该是最大的表。数据库的查询优化器如何处理这种情况?


阅读 132

收藏
2021-07-01

共1个答案

admin

只是添加更多有关该主题的信息……是和否,取决于。那是我的答案。它取决于许多因素,包括正在使用的RDBMS(MySQL,MSSQL
Server,Oracle,DB2 …),联接的类型,表的大小(即行数),索引等等。

先前的答案是“是”和“否”,并呼吁在查询中使用提示。但是您的问题是:

join语句中的表顺序是否有所不同…

我认为,这在强制查询优化器使用您喜欢的顺序时会省略查询提示的使用。

因此,重用我对问题的第一条评论中发布正确指出,重新排列联接(不包含查询提示)不会影响性能,因为查询优化器仍将使用当前查询的最有效执行计划。也许它不是最有效的,所以您可以使用提示并强制使用想要的联接顺序,从而修改查询的执行计划。

在以下链接上对该主题进行了更多讨论:
JOIN子句中的顺序重要吗?
优化联接方法

2021-07-01