日期:2014-05-18  浏览次数:20492 次

SQL语句 order by 的问题
有一个表UserInfo,ID和UserName分别为表的字段,其中ID数据类型为自动编号,有以下记录:

ID     UserName  
1           a
2           b
3           c
4           d
5           e
.           .
.           .
.           .

现有以下两条SQL语句:
select   top   100   UserName   from   UserInfo   和   select   top   100   UserName   from   UserInfo   order   by   ID   asc
请问,如果数据量有10万,只是按升序排的话,是不是推荐用第一条语句啊?
因为这两条SQL语句查询出来的结果好象是一样的,UserName   都是按a、b、c、d、e、f...排
但是执行效率好象是第一条语句快很多,注意数据库为Access的。
各位有什么看法,你们是不是都是   很喜欢用order   by   的呢?还有怎么考虑数据量大时排序的效率的呢?


------解决方案--------------------
ORDER一下,当然会做额外的工作。
如果你升序的话,尽量就不用再ORDER BY了,只要设计的时候注意这一点就可以了。

其实MSSQL也一样,一般来说,ID都是列都是自增的

但是SQL SERVER如果不用order by将会按照插入数据库的顺序来返回结果,最早插入的排列的靠前(特殊情况是,如果表有聚集索引的时候,返回结果按照聚集索引升序排列)。

和这个也不冲突。即使你的聚集索引没有加在ID上,也很可能加在时间字段上。而时间字段也基本上跟插入顺序相温和升续,对应ID也升续

不ORDER,提高效率,结果又一样,何乐而不为?