在varchar字段上建立索引时,没必要对全字段建立索引,根据实际文本区分度决定索引长度。
区分度
-- 长度20
mysql> select count(distinct left(`column_name`,20))/count(*) from table_name;
+-------------------------------------------------+
| count(distinct left(`column_name`,20))/count(*) |
+-------------------------------------------------+
| 0.8288 | -- 区分度
+-------------------------------------------------+
1 row in set (0.01 sec)
长度越长,区分度越大,选择最合适的长度,一般90%左右即可.
创建索引
alter table table_name add index index_column(`column_name`(20));