表中数据的排列顺序问题
Oracle中表里边的数据默认是按照聚集索引的顺序排列的吗?假定表中有主键和聚集索引。
索引?数据顺序
索引,数据顺序
------解决方案--------------------数据库select的默认排序
oracle对无order by的语句返回的结果不进行排序,oracle此时的处理方式是按照数据的物理存储顺序来读取数据。因为rowid是每行数据的地址,所以有时候看起来会像是使用rowid排序的。但这个顺序是可能被打乱的,在表的数据被删除后,rowid会被新插入的数据占用。所以一个无order by查询结果看起来也可能是个杂乱无章的。
要想有序,一定要加上 order by ,不要指望默认排序
------解决方案--------------------除了索引表,Oracle存储数据不讲究先后顺序,基本按照插入顺序存储。聚族表则把相同聚族值的行存放在相同或相邻的数据块中。