• 聊聊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

         Select rowid,
          dbms_rowid.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。

    参考: http://blog.csdn.net/chiclewu/article/details/25782619

  • 相关阅读:
    信息搜集与漏洞扫描
    ASN.1分析Alipay证书
    任务计划
    2020系统综合实践 期末大作业 21组
    2020系统综合实践 第6次实践作业 2组
    第5次实践作业
    第4次实践作业
    第3次实践作业
    第2次实践作业
    第1次实践作业
  • 原文地址:https://www.cnblogs.com/yldf/p/11900092.html
Copyright © 2020-2023  润新知