SQL语句的查询结果的顺序是由哪些因素决定

来源:网络 责任编辑:栏目编辑 发表时间:2013-07-01 09:21 点击:
以mysql为例 select * from data ;
output:
raw1
raw2
....
rawn
 
是什么因素决定了这顺序?(插入时间,物理存储?)
 
 
 
1.我想和oracle差不多,按数据块(索引块)内记录的物理顺序. 不保证一定按照插入记录的顺序.
2. 诸位同学说的按照插入顺序,没有证据证明此点. 也难以保证;
比如一个myisam表,全表扫描返回记录,那么是按照物理的顺序的,如果使用索引查找,是索引顺序和物理存储顺序的结合,如果仅仅读取index(比如覆盖索引),就是index的顺序,
还有,innodb的记录插入,实质上是一个索引组织表,主键不太可能都是顺序插入的,如何保证按照插入顺序读取出结果呢?
3.总之,这个顺序不好确定,也不应该决定于什么因素,不同的数据库实现不同.只能用order by 来限定.
 
影响因素会随着环境的差异而不一样。
总的来说,会与以下因素有关:
索引方式
物理位置
存储引擎
 
当然,可能还会有一些其他的细节
 
1.分存储引擎,典型的:MyISAM还是InnoDB
 
2.数据肯定根据主键或类似主键作用的索引来读取的,若是没有主键,那么是根据全表扫描读取的,也可能根据隐含的主键
 
3.索引存储的结构,比如B-tree,还是B+索引
 
4.其次才是数据插入的顺序,比如对于InnoDB,就会调整记录的顺序,而不一定按插入顺序而定的...
 
若是LZ的SQL有附加的 筛选条件 或者 排序条件,那就该另议论了。
 
不同的引擎有不同的结果,一般来说是按找插入的顺序,这样也利于用户理解,我们开发的引擎的这个顺序就经历过几次变化,开始的时候按倒序,后来为了适应数据结构,变成了部分随机,最后确定是按照插入顺序,一般来说不应依赖于这个顺序,如果一定要有顺序,请使用order by,当然,order by的列上最好建上索引。

    相关新闻>>

      发表评论
      请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
      用户名: 验证码:点击我更换图片
      最新评论 更多>>

      推荐热点

      • sql常见面试题
      • SQL SERVER 2005性能之跟踪
      • SQL编程(一)
      • LINUX上RMAN自动备份脚本
      • sql server面试题
      • 如何将多个SQL查询统计结果一次显示出来
      • 浅谈SQL Server中的事务日志(三)----在简单恢复模式下日志的角色
      • SQL小技巧系列 --- 行转列合并
      • sql server 列转行
      网站首页 - 友情链接 - 网站地图 - TAG标签 - RSS订阅 - 内容搜索
      Copyright © 2008-2015 计算机技术学习交流网. 版权所有

      豫ICP备11007008号-1