create table t as select 1 id,'ss' name from dba_objects;
Table created.
create index t_t on t(id,name);
Index created.
Index Leaf Distinct
Name BLV Blks Keys
------------------------------ --- ------------ --------------
T_T 1 49 1
Name BLV Blks Keys
------------------------------ --- ------------ --------------
T_T 1 49 1
select object_id,object_type from dba_objects where object_name='T_T';
OBJECT_ID OBJECT_TYPE
---------- --------------------------------------
205825 INDEX
alter session set events 'immediate trace name treedump level 205825';
---------- --------------------------------------
205825 INDEX
alter session set events 'immediate trace name treedump level 205825';
Session altered.
----- begin tree dump
branch: 0x1983ad63 428060003 (0: nrow: 49, level: 1)
leaf: 0x1983ad64 428060004 (-1: nrow: 422 rrow: 422)
leaf: 0x1983ad65 428060005 (0: nrow: 422 rrow: 422)
leaf: 0x1983ad66 428060006 (1: nrow: 422 rrow: 422)
leaf: 0x1983ad67 428060007 (2: nrow: 422 rrow: 422)
leaf: 0x1983ad68 428060008 (3: nrow: 422 rrow: 422)
leaf: 0x1983ad69 428060009 (4: nrow: 422 rrow: 422)
leaf: 0x1983ad6a 428060010 (5: nrow: 422 rrow: 422)
leaf: 0x1983ad6b 428060011 (6: nrow: 422 rrow: 422)
leaf: 0x1983ad6c 428060012 (7: nrow: 422 rrow: 422)
看到分支块(这里的根块也是这个块)的地址是0x1983ad63。而且分支块的条目是49.跟页块的数目是一样的。
我之前猜测的是,由于我建立的索引内容都是一摸一样的,因此分支块记录的条目里是不是只保留一个条目就行了
没必要一个块保留一个,看来我想错了,ORACLE还是对于一个叶子块在分支块里还是记录一个条目。
branch: 0x1983ad63 428060003 (0: nrow: 49, level: 1)
leaf: 0x1983ad64 428060004 (-1: nrow: 422 rrow: 422)
leaf: 0x1983ad65 428060005 (0: nrow: 422 rrow: 422)
leaf: 0x1983ad66 428060006 (1: nrow: 422 rrow: 422)
leaf: 0x1983ad67 428060007 (2: nrow: 422 rrow: 422)
leaf: 0x1983ad68 428060008 (3: nrow: 422 rrow: 422)
leaf: 0x1983ad69 428060009 (4: nrow: 422 rrow: 422)
leaf: 0x1983ad6a 428060010 (5: nrow: 422 rrow: 422)
leaf: 0x1983ad6b 428060011 (6: nrow: 422 rrow: 422)
leaf: 0x1983ad6c 428060012 (7: nrow: 422 rrow: 422)
看到分支块(这里的根块也是这个块)的地址是0x1983ad63。而且分支块的条目是49.跟页块的数目是一样的。
我之前猜测的是,由于我建立的索引内容都是一摸一样的,因此分支块记录的条目里是不是只保留一个条目就行了
没必要一个块保留一个,看来我想错了,ORACLE还是对于一个叶子块在分支块里还是记录一个条目。
row#0[8039] dba: 428060005=0x1983ad65------------叶子块的地址
col 0; len 2; (2): c1 02-------键值
col 1; len 2; (2): 73 73-------键值
col 2; len 6; (6): 19 83 ad 53 01 a6---------不清楚什么东东
row#1[8022] dba: 428060006=0x1983ad66
col 0; len 2; (2): c1 02
col 1; len 2; (2): 73 73
col 2; len 6; (6): 19 83 ad 54 00 bb
row#2[8005] dba: 428060007=0x1983ad67
col 0; len 2; (2): c1 02
col 1; len 2; (2): 73 73
col 2; len 6; (6): 19 83 ad 54 02 61
col 0; len 2; (2): c1 02-------键值
col 1; len 2; (2): 73 73-------键值
col 2; len 6; (6): 19 83 ad 53 01 a6---------不清楚什么东东
row#1[8022] dba: 428060006=0x1983ad66
col 0; len 2; (2): c1 02
col 1; len 2; (2): 73 73
col 2; len 6; (6): 19 83 ad 54 00 bb
row#2[8005] dba: 428060007=0x1983ad67
col 0; len 2; (2): c1 02
col 1; len 2; (2): 73 73
col 2; len 6; (6): 19 83 ad 54 02 61
可以看到分支块的DUMP内容里,COL O,COL 1都是一样的东东,因为我们建立索引的内容是一样的1,'ss'.
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/22034023/viewspace-718060/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/22034023/viewspace-718060/