所有基于SQL的RDBMS(版本长达10年):
直接连接查询(不带提示指令)中的表顺序是否对最佳性能和内存管理有所不同?我听说最后一个联接应该是最大的表。数据库的查询优化器如何处理这种情况?
只是添加更多有关该主题的信息……是和否,取决于。那是我的答案。它取决于许多因素,包括正在使用的RDBMS(MySQL,MSSQL Server,Oracle,DB2 …),联接的类型,表的大小(即行数),索引等等。
先前的答案是“是”和“否”,并呼吁在查询中使用提示。但是您的问题是:
join语句中的表顺序是否有所不同…
我认为,这在强制查询优化器使用您喜欢的顺序时会省略查询提示的使用。
因此,重用我对问题的第一条评论中发布正确指出,重新排列联接(不包含查询提示)不会影响性能,因为查询优化器仍将使用当前查询的最有效执行计划。也许它不是最有效的,所以您可以使用提示并强制使用想要的联接顺序,从而修改查询的执行计划。
在以下链接上对该主题进行了更多讨论: JOIN子句中的顺序重要吗? 优化联接方法