首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

奇怪的有关问题:关于排序

2012-04-26 
奇怪的问题:关于排序表testid(主键 自增长 int)索引是id这个字段select * from test 时排序如下2466842467

奇怪的问题:关于排序
表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的顺序来显示。
[解决办法]

探讨

order by 列中的索引(非聚集)不包含你select列表的列的话,是不会使用索引的
你可以看下执行计划

也就是说,如果有表tb 列:id,val,dt有聚集索引id,非聚集索引val

那select * from tb order by val
是不会直接使用非聚集索引的,而要使用一个sort的操作符来排序。

如果select id,val FROM tb 则可以直接……

热点排行
Bad Request.