日期:2014-05-17  浏览次数:20427 次

有聚集索引的表select × from tb
select × from tb
 出来的数据是按聚集索引顺序排好序的么?

------解决方案--------------------
聚集索引 插入的时候就已经排序好了,你SELECT 出来当然也是排序好的,除非你特定ORDER BY
------解决方案--------------------
准确来是说按聚集索引所在的那列或者那些列预先排序。可以看执行计划,如果有sort(中午符号叫:排序),那证明没有按聚集索引的顺序排序
------解决方案--------------------
不一定。有其他非聚集索引存在的话,可能会按其他非聚集索引键的顺序排序被select出来。
你自己试试就行了。
比如
主键 
------解决方案--------------------
 非聚集索引列

------解决方案--------------------
 B

------解决方案--------------------
 C

------解决方案--------------------
 A

------解决方案--------------------
 D
------解决方案--------------------
引用:
不一定。有其他非聚集索引存在的话,可能会按其他非聚集索引键的顺序排序被select出来。
你自己试试就行了。
比如
主键 
------解决方案--------------------
 非聚集索引列

------解决方案--------------------
 B

------解决方案--------------------
 C

------解决方案--------------------
 A

------解决方案--------------------
 D


对头,非聚集索引如果覆盖查询的话,有可能走非聚集索引。
如果并行查询,也不能保证按索引键顺序返回,总之要确保有序,order by吧。