为了保证前缀索引有较高的选择性,同时又不能太长可以使用计算完整列的选择性,并使前缀的索引性接近于完整列的选择性,方法如下:
表名: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的时候,前缀长度的选择性接近完整列的选择性,再增加前缀长度,选择性提升的幅度已经很小了。
新闻热点
疑难解答