索
引都会包含rowid来定位到具体的位置,但是唯一索引不会用rowid来作为“索引键”的一部分
比如在列col1上建立非唯一索引,则其索引键是col1| rowid,这样索引键就唯一了,但唯一索引不会在列上加上rowid构成索引键
比如在列col1上建立非唯一索引,则其索引键是col1| rowid,这样索引键就唯一了,但唯一索引不会在列上加上rowid构成索引键
测试:
SQL> conn / as sysdba
已连接。
SQL> create table t as select * from dba_objects;
表已创建。
SQL> create index t_idx on t(object_id);
索引已创建。
SQL> select t.header_file,t.header_block from dba_segments t
2 where t.segment_name='T';
HEADER_FILE HEADER_BLOCK
----------- ------------
1 58408
SQL> alter system dump datafile 1 block 58410;
系统已更改。
普通索引,内容如下:
row#0[8024] flag: ------, lock: 0, len=12
col 0; len 2; (2): c1 03
col 1; len 6; (6): 00 40 e4 29 00 30

本文详细探讨了Oracle数据库中唯一索引和ROWID的概念。内容指出,在非唯一索引中,Oracle通过额外列存储ROWID,而唯一索引则直接将ROWID整合在数据中。这揭示了ROWID在索引存储中的关键作用。
最低0.47元/天 解锁文章
171

被折叠的 条评论
为什么被折叠?



