您的位置:首页 > 数据库 > Oracle

oracle 无order by , 默认排序问题

2013-03-27 11:18 351 查看
Oracle会根据具体的数据块的存储返回记录.

oracle数据库是没有默认排序的 

要排序必须加上order  by 

因为oracle是按块进行读取数据的 

如果数据按顺序存储,则可能使读取出来的数据是按顺序的,给用户误解为默认排序

oracle没有进行任何排序操作,rowid表示的是数据存放的数据块内部地址,如果没有要求排序,oracle会顺序的从数据块中读取符合条件的数据返回到客户端,不过看起来好像是按照rowid排序似的

如果数据量足够大,即使相同的语句,都有可能不同的结果。

一般而言

表是堆表

所以是无序的

他是按照也即物理存放顺序来读取的

rowid 是自动随行生成的

 

另:

oracle 的rowid是啥意思

---------------------------------------------------------------

rowid是数据库的一个伪列,建立表的时候数据库会自动为每个表建立ROWID列

用来唯一标识一行记录。

rowid是存储每条记录的实际物理地址,对记录的访问是基于ROWID。

---------------------------------------------------------------

每条记录的物理地址,

对数据库中记录行的作快检索方式就是使用rowid来进行查找。

---------------------------------------------------------------

唯一标识一行记录

select rowid,* from 表名

试一下,你就明白了

---------------------------------------------------------------

rowid就象是邮递员送信时要找的信封上的家庭地址一样,每个rowid都不会重复,oracle查找通过它可以更快地查找到数据.

---------------------------------------------------------------

rowid是一个伪列,对应 块号,行号,行的序号..

---------------------------------------------------------------

个人不是dba。上的文章是转载的,其他的东西请知道的补充下,对这一块有点迷惑。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: