sql查询语句 没有加ORDER BY ,顺序不对

10万条数据,查出来的顺序不是按数据库中的默认顺序

数据库对无order
by的语句返回的结果不进行排序,此时的处理方式是按照数据的物理存储顺序来读取数据。因为rowid是每行数据的地址,所以有时候看起来会
像是使用rowid排序的。但这个顺序是可能被打乱的,在表的数据被删除后,rowid会被新插入的数据占用。所以一个无order
by查询结果看起来也可能是个杂乱无章的。
所以不要依赖数据库的默认排序,想要排序的话就自己加上order by.追问

但是用了order by的话查询速度很慢 将近5秒

追答

如果你建立了正确的索引还是不能提高速度,那么基本就提高不了多少了,你是在哪用到的查询,一般不可能用到一次性需要同时查出10万条数据,你可以做个分页查询

温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-11-07
SQLSERVER的话,在小数据量的时候,读数据,就是按照主键的顺序的读出来的

但是在数据量很大的时候,SQLSERVER会同时开启多个游标(相当于同时安排了多个人去找属于各自部门的数据),然后谁先找完,谁先返回,于是顺序就乱了追问

顺序乱了咋办~

加了order by ,顺序是对了 但是反应速度很慢

追答

order by 请加在主键或者索引上,而且asc和desc时注意索引的顺序

追问

速度还是差不多,还有什么其他的方法可以加快速度吗

追答

影响速度的原因有很多:
1、是否本机读取数据
2、是否以TCP IP通讯读取数据
3、硬件配置

本回答被提问者采纳
第2个回答  2014-11-07
帮数据表添加一个默认的index也没用嘛?追问

标识列吗?

追答

如果是sql数据库的话在 左边的表点开,下面有个 Indexes 项,添加一个你需要索引的列。Index type 设置 Clusterd,其他顺序什么的依次设置好

追问

索引按照默认的已经设置好了 ORDER BY也是按这一列的 但是速度依然还是差不多

追答

排序在代码里完成,代码里10W条应该不会很慢,试试。

第3个回答  2014-11-07
按理来说没加order by不会进行排序的啊追问

没加的时候不排序 所以顺序不对,加了之后反应时间很慢

相似回答