2

对于这样的 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 大得多。

4

3 回答 3

1

For each sql statement, the engine will create a query plan. So no matter how you put them, the engine will chose a correct path to build the query.

More on plans you have http://en.wikipedia.org/wiki/Query_plan

There are ways, considering what RDBMS you are using to enforce the query order and plan, using hints, however, if you feel that the engine does no chose the correct path.

于 2012-09-16T07:39:12.647 回答
0

有时表的顺序会在这里产生差异,(当您使用不同的连接时)

实际上,我们的加入致力于跨产品概念

如果您使用这样的查询A join B join C

会被这样对待(A*B)*C)

表示第一个结果是在加入 A 和 B 表之后,然后它将与 C 表进行连接

所以如果在内部加入 A(100 条记录)和 B(200 条记录)之后,它会给出(100 条记录)

然后这些(100条记录)将与(C的1000条记录)进行比较

于 2012-09-16T09:52:58.927 回答
0

不。

好吧,发生这种情况的可能性非常非常小,请参阅Jonathan Lewis 的这篇文章。基本上,可能的连接订单数量增长非常快,优化器没有足够的时间检查它们。在一些非常罕见的情况下,表格的顺序可能会用作决胜局。但我从来没有见过这种情况发生,甚至没有听说过它发生在现实生活中的任何人身上。你不必担心它。

于 2012-09-19T18:42:18.933 回答