Posted on 2011-10-20 10:27
瘋狂 閱讀(14319)
評論(1) 編輯 收藏 所屬分類:
database
Oracle會根據(jù)具體的數(shù)據(jù)塊的存儲返回記錄.
oracle數(shù)據(jù)庫是沒有默認(rèn)排序的
要排序必須加上order by
因?yàn)閛racle是按塊進(jìn)行讀取數(shù)據(jù)的
如果數(shù)據(jù)按順序存儲,則可能使讀取出來的數(shù)據(jù)是按順序的,給用戶誤解為默認(rèn)排序
oracle沒有進(jìn)行任何排序操作,rowid表示的是數(shù)據(jù)存放的數(shù)據(jù)塊內(nèi)部地址,如果沒有要求排序,oracle會順序的從數(shù)據(jù)塊中讀取符合條件的數(shù)據(jù)返回到客戶端,不過看起來好像是按照rowid排序似的
如果數(shù)據(jù)量足夠大,即使相同的語句,都有可能不同的結(jié)果。
一般而言
表是堆表
所以是無序的
他是按照也即物理存放順序來讀取的
rowid 是自動隨行生成的
另:
oracle 的rowid是啥意思
---------------------------------------------------------------
rowid是數(shù)據(jù)庫的一個偽列,建立表的時候數(shù)據(jù)庫會自動為每個表建立ROWID列
用來唯一標(biāo)識一行記錄。
rowid是存儲每條記錄的實(shí)際物理地址,對記錄的訪問是基于ROWID。
---------------------------------------------------------------
每條記錄的物理地址,
對數(shù)據(jù)庫中記錄行的作快檢索方式就是使用rowid來進(jìn)行查找。
---------------------------------------------------------------
唯一標(biāo)識一行記錄
select rowid,* from 表名
試一下,你就明白了
---------------------------------------------------------------
rowid就象是郵遞員送信時要找的信封上的家庭地址一樣,每個rowid都不會重復(fù),oracle查找通過它可以更快地查找到數(shù)據(jù).
---------------------------------------------------------------
rowid是一個偽列,對應(yīng) 塊號,行號,行的序號..
---------------------------------------------------------------
個人不是dba。上的文章是轉(zhuǎn)載的,其他的東西請知道的補(bǔ)充下,對這一塊有點(diǎn)迷惑。
關(guān)于order by的文章
http://blog.sina.com.cn/s/blog_6ff05a2c0100mlco.html關(guān)于有null的排序
http://blog.csdn.net/wh62592855/article/details/4813404