码迷,mamicode.com
首页 > 数据库 > 详细

Oracle排序问题

时间:2015-06-18 16:57:35      阅读:148      评论:0      收藏:0      [点我收藏+]

标签:

oracle本身不具有任何默认排序功能,要想排序,必须使用order by ,而order by后的数据行默认是asc(升序排列),要降序选择desc Oracle会根据具体的数据块的存储返回记录. oracle数据库是没有默认排序的 要排序必须加上order by 因为oracle是按块进行读取数据的 如果数据按顺序存储,则可能使读取出来的数据是按顺序的,给用户误解为默认排序 oracle没有进行任何排序操作,rowid表示的是数据存放的数据块内部地址,如果没有要求排序,oracle会顺序的从数据块中读取符合条件的数据返回到客户端,不过看起来好像是按照rowid排序似的 如果数据量足够大,即使相同的语句,都有可能不同的结果。 一般而言 表是堆表 所以是无序的 他是按照也即物理存放顺序来读取的 rowid 是自动随行生成的 另: oracle 的rowid是啥意思 --------------------------------------------------------------- rowid是数据库的一个伪列,建立表的时候数据库会自动为每个表建立ROWID列 用来唯一标识一行记录。 rowid是存储每条记录的实际物理地址,对记录的访问是基于ROWID。 --------------------------------------------------------------- 每条记录的物理地址, 对数据库中记录行的作快检索方式就是使用rowid来进行查找。 --------------------------------------------------------------- 唯一标识一行记录 select rowid,* from 表名 试一下,你就明白了 --------------------------------------------------------------- rowid就象是邮递员送信时要找的信封上的家庭地址一样,每个rowid都不会重复,oracle查找通过它可以更快地查找到数据. --------------------------------------------------------------- rowid是一个伪列,对应 块号,行号,行的序号..

Oracle排序问题

标签:

原文地址:http://www.cnblogs.com/iliuyuet/p/4586189.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!