关于oracle,select出来的数据的顺序的问题

想问下,select普通select出来的顺序,无order by,这个顺序是怎么定的,oracle返回出来的是随机的么

一般来说,和插入的顺序是相关的,但是如果表有索引或者有数据更新、数据库压缩,这个顺序就不确定。
注意是不能确定(涉及到的可能性太多),而不是随机。理论上,相同的数据库,完全没有修改,前后两次相同的查询返回的顺序应该一样。

oracle对无order by的语句返回的结果不进行排序,oracle此时的处理方式是按照数据的物理存储顺序来读取数据。这和oracle的表结构是有关系的,因为oracle的表结构默认是按堆存放的。按堆存放的意思就是,随便存,存的时候就是乱序的。如果你建表的时候就是建的按索引组织的表,那么它返回的时候就会默认排序了。

oracle的查询条件不佳排序,查询的结果和数据存储在磁盘上的位置有关系。
数据开始存储的时候磁盘的会给存储数据分配一块地址用来存储,这个存储的地址决定了默认查询的条件。

出来的数据顺序是固定的,也就是存放在数据库里的顺序。
如果你想要取出随机顺序的数据,可以采用如下代码:
SELECT * FROM jzjy ORDER BY newid()
下面是代码的两次执行结果对比:
第一次运行结果

第二次运行结果

不使用order by 的情况下,先插入的在前面

不指定排序的情况上,应该是按物理存储的顺序先后读取吧