以下是我正在执行的查询。
select col1, col2 from table1 where col1 in (select table2.col1 from table2) and col2 = 'ABC' ;
- 在 table1 中,col2 上有索引,col1 上没有索引。
- 我在表 1 中有大约 400 万条“ABC”记录。
- table1 的总大小约为 5000 万。
- table2 的大小更小。100万左右。(此表上没有可用的索引)
查询需要很长时间才能出来。如果我删除“in (select table2.col1 from table2)”条件,则查询的行为方式与索引查询所需的方式相同。
我的问题是,如果我们在 where 子句中使用了索引列,并且我们包含了非索引列的条件(特别是 in 条件),是否有可能影响性能?查询的解释计划没有给出任何非索引获取的提示。
另外,条件的顺序重要吗?即,如果我在非索引子句之前给出索引子句,oracle 会仅在所选子集上应用非索引子句吗?
提前致谢。