watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=

         题目         部分

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


     
         答案部分          



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

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

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

1SELECT INDEX_NAME,DISTINCT_KEYS/NUM_ROWS SELECTIVITY FROM DBA_INDEXES;
     

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