Posted on 2011-10-20 10:27
瘋狂 閱讀(14319)
評論(1) 編輯 收藏 所屬分類:
database
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。上的文章是轉載的,其他的東西請知道的補充下,對這一塊有點迷惑。
關于order by的文章
http://blog.sina.com.cn/s/blog_6ff05a2c0100mlco.html關于有null的排序
http://blog.csdn.net/wh62592855/article/details/4813404