索引读取顺序

目的:考察 索引读取数据的顺序

1.创建测试表 注意字段长度
SQL> create table test1104 (n1 char(2000),n2 char(2000),n3 char(2000),n4 char(1000));

Table created.

2.修改字段属性 not null

SQL> alter table test1104 modify (n1 not null);

Table altered.

3.插入测试数据
SQL> insert into test1104 values(1,1,1,1);
SQL> insert into test1104 values(2,2,2,2);

2 row created.

4.创建索引
SQL> create index ind_n1 on test1104(n1);

Index created.

5.取出数据的rowid
SQL> select rowid,n1 from test1104;

ROWID   N1
------------------------------------
AAAT5/AAEAAAAQEAAA         1
AAAT5/AAEAAAAQFAAA         2

虽然仅仅两条数据,但还是占用两个数据块

6.根据该rowid 取出 数据分布的位置
SQL>  select get_rowid('AAAT5/AAEAAAAQEAAA') from dual;

GET_ROWID('AAAT5/AAEAAAAQEAAA')
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Object# is      :81535
Relative_fno is :4
Block number is :1028
Row number is   :0


SQL> select get_rowid('AAAT5/AAEAAAAQFAAA') from dual;

GET_ROWID('AAAT5/AAEAAAAQFAAA')
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Object# is      :81535
Relative_fno is :4
Block number is :1029
Row number is   :0

7.dump该索引
SQL> ALTER SESSION SET EVENTS 'immediate trace name TREEDUMP level 81536';

Session altered.

索引dump信息如下:

----- begin tree dump
leaf: 0x10005b3 16778675 (0: nrow: 2 rrow: 2)
----- end tree dump

8.检查该 地址对应的数据块

SQL> select dbms_utility.data_block_address_file(16778675) "file",dbms_utility.data_block_address_block(16778675) "block"  from dual;

      file      block
---------- ----------
         4       1459

9.dump该数据块
SQL> alter system dump datafile 4 block 1459;

System altered.

dump信息如下:


 

创建时间:2022-04-02 14:00
浏览量:0