【发布时间】:2014-11-14 21:48:32
【问题描述】:
如果列在两个索引之间是通用的,我无法在 oracle 中获得索引选择行为。
下面是示例代码:
create table emp
(id number,
dpt number);
我在这张表上有 2 个索引:
create unique index ind1 on emp (id);
create unique index ind2 on emp (id,dpt);
这是我使用的数据:
Insert into EMP (ID,DPT) values (1,2);
Insert into EMP (ID,DPT) values (2,2);
Insert into EMP (ID,DPT) values (3,2);
当我根据一些过滤条件获取数据时,
select * from emp where id =2;
IND2 正在按照说明计划使用
当我使用范围查询 IND1 时:
select * from emp where id > 2;
我没有得到关于这种索引行为的任何具体原因。
这里是否使用了任何特定逻辑来决定在每个查询中使用哪个索引。
【问题讨论】:
-
@Jon Heller...感谢您的 cmets。使用我使用的数据进行了更新。但现在,奇怪的是,这两个查询都仅使用索引 IND2,而之前的行为有所不同。跨度>
-
这很奇怪,这甚至是可能的。在较旧的 Oracle 版本中,有一个限制,即在一个索引上设置的列不能是其他索引的“前缀”。
标签: oracle