请问各位老大,oracle为什么不能对同一列建立不同的索引?
比如说:
CREATE TABLE list_part_tab (
id number
,deal_date DATE
,area_code number
,contents varchar2(4000)
) PARTITION BY list (area_code) (
PARTITION p_591 VALUES (591)
,PARTITION p_592 VALUES (592)
,PARTITION p_593 VALUES (593)
,PARTITION p_594 VALUES (594)
,PARTITION p_595 VALUES (595)
,PARTITION p_596 VALUES (596)
,PARTITION p_597 VALUES (597)
,PARTITION p_598 VALUES (598)
,PARTITION p_599 VALUES (599)
,PARTITION p_other VALUES (DEFAULT)
);
建立了一个分区表。然后建立索引:
create index ind_list_part_tab_1 on list_part_tab(area_code) global partition by range (area_code)(
PARTITION p_591 VALUES less than (591),
PARTITION p_592 VALUES less than (592),
PARTITION p_593 VALUES less than (593),
PARTITION p_594 VALUES less than (594),
PARTITION p_595 VALUES less than (595),
PARTITION p_596 VALUES less than (596),
PARTITION p_597 VALUES less than (597),
PARTITION p_598 VALUES less than (598),
PARTITION p_599 VALUES less than (599),
PARTITION p_other VALUES less than (maxvalue)
);
然后再建立一个
SQL> Create index ind_list_part_tab_2 on list_part_tab(area_code) local;
Create index ind_list_part_tab_2 on list_part_tab(area_code) local
*
ERROR at line 1:
ORA-01408: such column list already indexed
就不让建立了。
虽然索引列一样,但是一个local索引,一个global用途不一样。
可是可以通过制定hint等方式决定走哪个索引。为什么他就不让建立了呢?
oracle设计这个的时候背后原理是什么呢?