聊聊oracle rowid与索引结构

网友投稿 926 2022-09-08

聊聊oracle rowid与索引结构

聊聊oracle rowid与索引结构

ROWID定义

ROWID:数据库中行的全局唯一地址

对于数据中的每一行,rowid伪列返回行的地址。rowid值主要包含以下信息:

对象的数据对象编号该行所在的数据文件中的数据块该行中数据块的位置(第一行是0)数据行所在的数据文件(第一个文件是1)。该文件编号是相对于表空间。

扩展ROWID

从Oracle 8i开始使用扩展rowid标识行物理地址扩展rowid使用base64编码行的物理地址,编码字符包含 A-Z, a-z, 0-9, +, 和 /。扩展rowid由四部分组成:OOOOOOOFFFBBBBBBRRR:

其中

1. OOOOOO:数据对象编号(6位显示)

2. FFF:相关数据文件编号(3位显示)

3. BBBBBB:数据块编号(6位显示)

4. RRR:数据块中行编号(3位显示)

base 64编码

实例

create table my_rowid(id number,name varchar2(50)); insert into my_rowid values(1,'whz'); insert into my_rowid values(2,'chiclewu'); commit;

查询1

select rowid, substr(rowid, 1, 6) "#object", substr(rowid, 7, 3) "#file", substr(rowid, 10, 6) "#block", substr(rowid, 16, 3) "#rowno", length(rowid) len from my_rowid;

结果:

* 查询2

.rowid_object(rowid) "#object", dbms_rowid.rowid_relative_fno(rowid) "#file", dbms_rowid.rowid_block_number(rowid) "#block", dbms_rowid.rowid_row_number(rowid) "#row" from my_rowid;

结果:

索引结构

索引存储了索引列和ROWID。

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Linux基础知识集锦
下一篇:实践案例1-利用低代码开发平台Odoo快速构建律师事务所管理系统
相关文章

 发表评论

暂时没有评论,来抢沙发吧~