ROWID:數(shù)據(jù)庫中行的全局唯一地址
? ROWID是ORACLE中的一個(gè)重要的概念遥倦。用于定位數(shù)據(jù)庫中一條記錄的一個(gè)相對(duì)唯一地址值。ROWID它是一個(gè)偽列,它并不實(shí)際存在于表中。它是ORACLE在讀取表中數(shù)據(jù)行時(shí)的寺旺,根據(jù)每一行數(shù)據(jù)的物理地址信息編碼而成的一個(gè)偽列爷抓。所以根據(jù)一行數(shù)據(jù)的ROWID能找到一行數(shù)據(jù)物理地址信息,從而快速地定位到數(shù)據(jù)行阻塑。
? ? 數(shù)據(jù)庫的大多數(shù)操作都是通過ROWID來完成的蓝撇,而且使用ROWID來進(jìn)行單記錄定位速度是最快的。
? ? B-Tree索引的每個(gè)索引條目具有兩個(gè)字段叮姑。第一個(gè)字段表示索引的鍵值唉地,對(duì)于單列索引來說是一個(gè)值;而對(duì)于多列索引來說則是多個(gè)值組合在一起的传透。第二個(gè)字段表示鍵值所對(duì)應(yīng)的記錄行的ROWID耘沼。
索引值→ROWID->將ROWID換算成一行數(shù)據(jù)的物理地址->得到一行數(shù)據(jù)
rowid 結(jié)構(gòu)
第一部分6位表示:該行數(shù)據(jù)所在的數(shù)據(jù)對(duì)象的?data_object_id;?
第二部分3位表示:該行數(shù)據(jù)所在的相對(duì)數(shù)據(jù)文件的id;?
第三部分6位表示:該數(shù)據(jù)行所在的數(shù)據(jù)塊的編號(hào)朱盐;?
第四部分3位表示:該行數(shù)據(jù)的行的編號(hào)群嗤;
rowid 每位用64進(jìn)制編碼,具體A~Z表示0到25;a~z表示26到51;0~9表示52到61;+表示62;/表示63;
AAAT4y=19*64*64+56*64+50=81458
AAE=4
AAAAKr=10*64+43=683
AAA=0
即地址為obj#=81458兵琳,rfile#=4,block#=683,row#=0