Oracle索引使用

时间:2011-12-06 09:46:35

标签: oracle indexing

我在表的几列上有一个索引。如果我没有提到where子句中的所有列,那么将使用该索引吗?

1 个答案:

答案 0 :(得分:7)

答案是:这取决于。

实际上,这在很大程度上取决于许多统计因素,这些因素通常在创建索引时或通过预定作业时收集。统计数据包括数据的基数(您拥有多少行),其方差,分布,是否有一些值过多,是否有许多不同的值。

通常,当过滤索引顺序中的 first 列时,可以使用索引。但是,当第一列具有足够低的基数时,Oracle优化器可以使用SKIP SCAN方法迭代第二列的所有值。

我建议您阅读Oracle Concepts指南的section on indexes。 Tom Kyte建议整个指南说当你想知道Oracle RDBMS是什么时,它是最重要的读物。