2017-02-12 57 views
1

假设我有两个表,表1 两个领域:ID和成本,与群集,小学,指数(成本,ID)。其他表,表2,只是有id,那就是主键。如何实现MySQL的聚集索引排序加入结果

因此,table1中的数据按成本排序 - 归因于聚簇索引。

如果我去:

Select * from table1 join table2 using (id) 

结果并不总是要在聚集索引表1中定义的顺序。在那种情况下,当将多个表连接到具有特定/复合聚集索引的表时,如何实现这种排序?

+2

请注意。除非在查询中包含“ORDER BY”子句,否则SQL结果集排序是正式不可预测的。 *正式不可预测*比随机更糟糕,因为在测试中难以捕捉:结果集的顺序保持不变**直到它没有。**当您的索引顺序匹配时,'ORDER BY'不会花费太多成本它。 –

+1

要订购结果集,您必须使用'order by'。如果你不使用'order by',它会导致一个任意的顺序 - 这可能是你目前所希望的顺序,但是这并不是完全保证的,并且可能随时改变(例如,当mysql选择不同的时候执行计划,这是'straight_join'在这里的效果。) – Solarflare

回答

-2

你在找什么是STRIAGHT_JOIN。

如果你这样做:

SELECT * from table1 STRIAGHT_JOIN table2 using (id) 

订单将被保留。

+0

谢谢! --------- –