所以我决定进行模拟,看看发生了什么(我正在学习oracle大约7个月,可能是错误),我知道在正常索引中维护了DML操作(当DML操作引起时更新了索引),但是我想检查一下是否维护的DML操作中的invisible indexes
。现在我创建表=>
create table emin1 ( id number primary key,nomre number );
insert into emin1 values(1,1);
insert into emin1 values(2,1);
首先获取索引名称(我没有创建索引),然后在normal index
=>
SQL> select index_name,table_name from user_indexes a where table_name = 'EMIN3';
INDEX_NAME TABLE_NAME
--------------- ---------------
SYS_C008422 EMIN3
analyze index SYS_C008422 validate structure;
SQL> select name,lf_rows,distinct_keys from index_stats;
NAME LF_ROWS DISTINCT_KEYS
--------------- ---------- -------------
SYS_C008422 2 2
我不知道index_stats
中的大多数列,而是选择DISTINCT_KEYS
列(我只知道:))),在静力学之后,我再次插入2行并再次进行分析=>
insert into emin1 values(3,1);
insert into emin1 values(4,1);
analyze index SYS_C008422 validate structure;
SQL> select name,distinct_keys from index_stats;
NAME LF_ROWS DISTINCT_KEYS
--------------- ---------- -------------
SYS_C008422 4 4
因此,在插入操作之后,我们看到index_stats中的值发生了变化(这意味着保持不变),在normal index
之后,我将其强制设置为invisible index
=>
SQL> alter index SYS_C008422 invisible;
Index altered.
插入一些行=>
insert into emin1 values(5,1);
insert into emin1 values(6,1);
insert into emin1 values(7,1);
SQL> analyze index SYS_C008422 validate structure;
Index analyzed.
SQL> select name,distinct_keys from index_stats;
NAME LF_ROWS DISTINCT_KEYS
--------------- ---------- -------------
SYS_C008422 7 7
所以它又被改变了,我不知道我是否正确,但是我想知道专家的意见,因为在google中搜索了更多有关此问题的信息,但是我找不到明确的答案,因此我模拟了一下以查看DML操作中发生了什么,我找到了这种方法,并且我认为这将对更多的初学者有所帮助。