部分索引的原因有:
char/varchar太长全部做索引的话,效率太差
或者blob/text类型不能整列做索引列,因此需要使用前缀索引
例:alert table t1 add index(name(7));//name列上最左边创建7个字符长度
MySQL前缀索引能有效减小索引文件大小,提高索引的速度。
但是前缀索引也有他的坏处:MySQL不能再ORDER BY 或 GROUP BY 中使用前缀索引,也不能把他们用作覆盖索引
#全列选择性
SELECT COUNT(DISTINCT column_name) / COUNT(*) FROM table_name;
#测试某一长度前缀的选择性
SELECT COUNT(DISTINCT LEFT(column_name, prefix_length)) / COUNT(*) FROM table_name;