大部分人创建数据库的索引的时候,都是直接给某个字段添加索引,并未使用索引的长度。
事实上判断一个索引是否高效,主要通过索引的长度
以及区分度
来衡量。
比如我们有个字典包含下面几个单词
我们
我们的祖国
我
如果通过我
来查询匹配到三个,通过我们
来查询匹配到两个,通过我们的
来查询只匹配到一个.
这边就包含了长度和区分度的应用,理论上索引长度越长,区分度越高,但是相应的占用空间也大,在实际应用中我们并不需要百分百匹配,所以我们需要在两个之间进行取舍,选择一个对两者都好的值。原则就是:索引长度小,精确度高。
以文章表,文章标题索引来看
select count(distinct left(title,60))/count(*) from articles;
上面语句可以通过调整长度来看精度,最终选择一个合适的值。
建索引的时候附带上长度
alter table articles add index idx_title (title(60));