我们需要不断地查询一个 800 万行的表,所以我们决定为这个作业创建一个索引。
在查询中,我们在 where 条件中使用 3 列,就像
SELECT something
FROM my_table
WHERE TRUNC(DATE) = TRUNC(SYSDATE)
AND IS_GREETED = 1
AND EMP_ID = 'JOHN.SMITH'
因此,我们仅使用 EMP_ID 创建索引 1,并使用所有这 3 个字段(DATE、IS_GREETED、EMP_ID)创建索引 2。
通过 SQL Developer 的自动跟踪功能,我们发现 Oracle 实际上使用的是索引 1,而不是索引 2,这与我们的想法相反。
这是什么原因?还有其他方法可以提高性能吗?谢谢。