我目前正在通过“解释计划”功能在oracle sql developer中分析我的查询。我没有为我的数据定义任何索引,但是,执行计划表明我是。所以我查看了索引,并且有一些索引似乎默认创建。 那些指数是什么类型的?我尝试访问这些索引的“详细信息”选项卡,但它们并没有真正帮助。我所能理解的是,它实际上是我创建的每个表的1个索引。
答案 0 :(得分:2)
可能你没有明确定义任何索引,但Oracle在你创建约束时隐式地为你做了这个;例如:
SQL> create table master_table(id_master number, description_master varchar2(100));
Table created.
SQL> select count(1)
2 from user_indexes
3 where table_name = 'MASTER_TABLE';
COUNT(1)
----------
0
SQL> alter table master_table add constraint master_pk primary key (id_master);
Table altered.
SQL> alter table master_table add constraint detail_uk unique (description_master);
Table altered.
SQL> select count(1)
2 from user_indexes
3 where table_name = 'MASTER_TABLE';
COUNT(1)
----------
2
关于列的顺序:
SQL> create table DOUBLE_PK_TABLE(id1 number, id2 number);
Table created.
SQL> alter table double_pk_table add constraint double_pk primary key (id1, id2);
Table altered.
SQL> select index_name, column_name, column_position
2 from user_indexes
3 inner join user_ind_columns col
4 using(index_name, table_name)
5 where table_name ='DOUBLE_PK_TABLE';
INDEX_NAME COLUMN_NAME COLUMN_POSITION
------------------------------ ------------------------------ ---------------
DOUBLE_PK ID1 1
DOUBLE_PK ID2 2