数据库 – Oracle会在哪些情况下自动创建索引?
发布时间:2020-12-12 07:05:54 所属栏目:MsSql教程 来源:网络整理
导读:据我所知( this page)Oracle为每个UNIQUE或PRIMARY KEY声明自动创建一个索引。这是Oracle中自动创建索引的完整列表吗? 解决方法 首先,当我们创建主键或唯一键时,Oracle并不总是创建一个索引。如果该列上已经有一个索引,它会改为使用它… SQL create table
据我所知(
this page)Oracle为每个UNIQUE或PRIMARY KEY声明自动创建一个索引。这是Oracle中自动创建索引的完整列表吗?
解决方法首先,当我们创建主键或唯一键时,Oracle并不总是创建一个索引。如果该列上已经有一个索引,它会改为使用它…SQL> create table t23 (id number not null) 2 / Table created. SQL> create index my_manual_idx on t23 ( id ) 2 / Index created. SQL> select index_name from user_indexes 2 where table_name = 'T23' 3 / INDEX_NAME ------------------------------ MY_MANUAL_IDX SQL> …注意MY_MANUAL_IDX不是唯一的索引;没关系 SQL> alter table t23 2 add constraint t23_pk primary key (id) using index 3 / Table altered. SQL> select index_name from user_indexes 2 where table_name = 'T23' 3 / INDEX_NAME ------------------------------ MY_MANUAL_IDX SQL> drop index my_manual_idx 2 / drop index my_manual_idx * ERROR at line 1: ORA-02429: cannot drop index used for enforcement of unique/primary key SQL> 还有另一种情况,Oracle会自动创建索引:LOB存储…. SQL> alter table t23 2 add txt clob 3 lob (txt) store as basicfile t23_txt (tablespace users) 4 / Table altered. SQL> select index_name from user_indexes 2 where table_name = 'T23' 3 / INDEX_NAME ------------------------------ MY_MANUAL_IDX SYS_IL0000556081C00002$$ SQL> 编辑 数据库将XMLType与其他LOB相同… SQL> alter table t23 2 add xmldoc xmltype 3 / Table altered. SQL> select index_name from user_indexes 2 where table_name = 'T23' 3 / INDEX_NAME ------------------------------ MY_MANUAL_IDX SYS_IL0000556081C00002$$ SYS_IL0000556081C00004$$ SQL> (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |