1.简介
当我们执行了select语句,select返回的记录的顺序对我们编程方式有较大影响,对数据库记录备份清除以及sql性能优化都有很大的关系。因此有必要明确select返回记录的顺序。
select返回记录的顺序与数据库类型有很大关系,因此以下按数据库类型分别讨论。本文主要讨论了oracle/sybase/sql server返回记录的顺序,从原理探讨三种数据库各自的特点,并着重探讨了这些差异对数据查询及记录备份的影响。
2. oracle
以下假设数据库查询优化方式均为基于rule的方式,oracle 采用两种访问表中记录的方式:
a. 全表扫描 (full table scan)
全表扫描就是顺序地访问表中每条记录. oracle采用一次读入多个数据块(database block)的方式优化全表扫描。
b. 通过rowid访问表
你可以采用基于rowid的访问方式情况,提高访问表的效率,rowid包含了表中记录的物理位置信息。oracle采用索引(index)实现了数据和存放数据的物理位置(rowid)之间的联系。通常索引提供了快速访问rowid的方法,因此那些基于索引列的查询就可以得到性能上的提高。通常表现为按索引扫描。(index scan)