奇怪的问题:关于排序
表test
id(主键 自增长 int)
索引是id这个字段
select * from test 时排序如下
246684
246709
246711
246512
我觉得应该是
246512
246684
246709
246711
非写成select * from test order by id才正确
[解决办法]
SQL SERVER 数据库中它是按照集合查询的。也就是说:在集合中,顺序是无序的。它会随即出现。
而order by 是对这个的一个排序,是按顺序列出,但在性能上的消耗是比较大的。
[解决办法]
order by 列中的索引(非聚集)不包含你select列表的列的话,是不会使用索引的
你可以看下执行计划
也就是说,如果有表tb 列:id,val,dt有聚集索引id,非聚集索引val
那select * from tb order by val
是不会直接使用非聚集索引的,而要使用一个sort的操作符来排序。
如果select id,val FROM tb 则可以直接在非聚集索引val的顺序来显示。
[解决办法]