Oracle索引使用

Rne*_*net 2 oracle indexing

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

Ben*_*oit 7

答案是:这取决于.

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

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

我建议您阅读有关 Oracle Concepts指南索引部分.Tom Kyte建议整个指南说当你想知道Oracle RDBMS是什么时,它是最重要的读物.