mysql前缀索引优化示例
现有一数据表,数据量79W, 微信openid字段为定长28位char型,目前是做的全字段索引,需要做一下索引优化,.
我们先来看下选择性,
全字段索引的:
SELECT COUNT(DISTINCT(`openid`)))/COUNT(*) AS selectability FROM `mytable` selectabiliy ------------ 0.8750
取前8位:
SELECT COUNT(DISTINCT(LEFT(`openid`, 8)))/COUNT(*) AS selectability FROM `mytable`
selectabiliy
------------
0.0008
Oh,貌似前8位极其相似。再看下前10位:
SELECT COUNT(DISTINCT(LEFT(`openid`, 10)))/COUNT(*) AS selectability FROM `mytable` selectabiliy ------------ 0.7130
嗯,还是不太理想。再看下前12位:
SELECT COUNT(DISTINCT(LEFT(`openid`, 12)))/COUNT(*) AS selectability FROM `mytable`
selectabiliy
------------
0.8750
😍😍 已经等同于全字段索引的选择性了,就是它了。

浙公网安备 33010602011771号