大部分人创建数据库的索引的时候,都是直接给某个字段添加索引,并未使用索引的长度。

事实上判断一个索引是否高效,主要通过索引的长度以及区分度来衡量。

比如我们有个字典包含下面几个单词

我们
我们的祖国
我

如果通过来查询匹配到三个,通过我们来查询匹配到两个,通过我们的来查询只匹配到一个.

这边就包含了长度和区分度的应用,理论上索引长度越长,区分度越高,但是相应的占用空间也大,在实际应用中我们并不需要百分百匹配,所以我们需要在两个之间进行取舍,选择一个对两者都好的值。原则就是:索引长度小,精确度高。

以文章表,文章标题索引来看

select count(distinct left(title,60))/count(*) from articles;

上面语句可以通过调整长度来看精度,最终选择一个合适的值。

建索引的时候附带上长度

alter table articles add index idx_title (title(60));