【DB笔试面试564】在Oracle中,什么是索引的选择性?

  • 2019 年 10 月 10 日
  • 笔记

题目部分

在Oracle中,什么是索引的选择性?

答案部分

索引的选择性(Index Selectivity,索引的选择度或索引的选择率)是指索引列中不同值的记录数与表中总记录数的比值。索引的选择性的取值范围是[0,1]。例如,某个表的记录数是1000条,而该表的索引列的值只有900个不同的值(有100个是相同或是空),所以,该列索引的选择性为900/1000=0.9。对于索引的选择性,值越高那么表示该列索引的效率也就越高。可以使用如下的SQL来计算索引的选择性:

SELECT COUNT(DISTINCT NAME)/COUNT(*) FROM TB_A;  

这种方法的优点是在创建索引前就能评估索引的选择性。当索引被收集了最新的统计信息时,可以使用如下的SQL语句查询索引的选择性:

SELECT INDEX_NAME,DISTINCT_KEYS/NUM_ROWS SELECTIVITY FROM DBA_INDEXES;  

毋庸置疑,主键的选择性为1。选择性越接近1,那么该索引就越好。

本文选自《Oracle程序员面试笔试宝典》,作者:李华荣。