对于像这样的SQL查询。
Select * from TABLE_A a
JOIN TABLE_B b
ON a.propertyA = b.propertyA
JOIN TABLE_C
ON b.propertyB = c.propertyB
表格的顺序是否重要。它在结果中无关紧要,但它们会影响性能吗?
可以假设表C中的数据远大于a或b。
答案 0 :(得分:1)
对于每个sql语句,引擎将创建一个查询计划。因此,无论您如何使用它们,引擎都会选择正确的路径来构建查询。
有关您的计划的更多信息http://en.wikipedia.org/wiki/Query_plan
有些方法,考虑到您使用RDBMS来强制执行查询顺序和计划,但是,如果您认为引擎没有选择正确的路径,则会使用提示。
答案 1 :(得分:0)
有时候,表格顺序会在这里产生差异,(当你使用不同的联接时)
实际上我们加入了跨产品概念
如果您使用的是此A join B join C
它将被视为此(A*B)*C)
表示加入A和B表后第一个结果,然后它将与C表连接
因此,如果内部加入A(100记录)和B(200记录),如果它将给予(100记录)
然后这些(100记录)将与(1000记录的C)进行比较
答案 2 :(得分:0)
没有
嗯,发生这种情况的可能性很小,见this article by Jonathan Lewis。基本上,可能的连接顺序的数量增长非常快,并且优化器没有足够的时间来检查它们。在一些非常罕见的情况下,表的顺序可以用作打破平局。但我从来没有在现实生活中看到过这种情况,或者甚至没有看到它发生过。你不必担心它。