ROWID:数据库中行的全局唯一地址
ROWID是ORACLE中的一个重要的概念。用于定位数据库中一条记录的一个相对唯一地址值。ROWID它是一个伪列,它并不实际存在于表中。它是ORACLE在读取表中数据行时的,根据每一行数据的物理地址信息编码而成的一个伪列。所以根据一行数据的ROWID能找到一行数据物理地址信息,从而快速地定位到数据行。
数据库的大多数操作都是通过ROWID来完成的,而且使用ROWID来进行单记录定位速度是最快的。
B-Tree索引的每个索引条目具有两个字段。第一个字段表示索引的键值,对于单列索引来说是一个值;而对于多列索引来说则是多个值组合在一起的。第二个字段表示键值所对应的记录行的ROWID。
索引值→ROWID->将ROWID换算成一行数据的物理地址->得到一行数据
rowid 结构
第一部分6位表示:该行数据所在的数据对象的 data_object_id;
第二部分3位表示:该行数据所在的相对数据文件的id;
第三部分6位表示:该数据行所在的数据块的编号;
第四部分3位表示:该行数据的行的编号;
rowid 每位用64进制编码,具体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