為了保證前綴索引有較高的選擇性,同時又不能太長可以使用計算完整列的選擇性,并使前綴的索引性接近于完整列的選擇性,方法如下:
表名:city_demo, city是城市名稱字段
mysql>SELECT COUNT(DISTINCT `city`)/COUNT(*) FROM `city_demo`;顯示結果:
+---------------------------------+| COUNT(DISTINCT `city`)/COUNT(*) | +-----------------+----------+-----| 0.0312|+---------------------------------+也就是說前綴索引的選擇性能夠接近0.031,那么該長度的索引就可以用了。
顯示結果:
+-------+-------+-------+-------+-------+| sel3 | sel4 | sel5 | sel6 | sel7 |+-------+-------+-------+-------+-------+| 0.239 |0.0293 |0.0305 |0.0309 |0.0310 |+-------+-------+-------+-------+-------+查詢結果顯示當前綴長度達7的時候,前綴長度的選擇性接近完整列的選擇性,再增加前綴長度,選擇性提升的幅度已經很小了。
新聞熱點
疑難解答