SQL> select table_owner, table_name, index_name,distinct_keys, num_rows from user_indexes where table_name='EMP';
TABLE_OWNER TABLE_NAME INDEX_NAME DISTINCT_KEYS NUM_ROWS
------------------------------ ------------------------------ ------------------------------ ------------- ----------
SCOTT EMP EMP_ID2 12 14
SCOTT EMP HIRE_DATE_IDX 13 14
SCOTT EMP PK_EMP 14 14
SQL>
oracle基于查询和数据,提供了很多种方法来判断使用索引的价值。首选判断索引中的唯一键或不同键的数量。通过上例的distinct_keys和num_rows的比较看出索引的选择性
索引的选择性可以帮助基于成本的优化器来决定执行路径。索引的选择性越高,针对每个不同值平均返回的行数也越少。
注意:对于组合索引,在索引中添加额外的列不会显著改善选择性,额外列增加的成本可能会超出收益。