当前位置:Gxlcms > 数据库问题 > Oracle排序问题

Oracle排序问题

时间:2021-07-01 10:21:17 帮助过:4人阅读

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排序问题

标签:

人气教程排行