索引使用规则5——前缀索引
前缀索引:当字段类型是字符串(varchar,text)的时候,有时候需要索引很长的字符串(文章标题或者内容),这会让索引变得很大,查询的时候,浪费大量的磁盘IO,影响查询效率。
怎么解决这类问题呢?我们又不可能把一整篇文章放进索引里面去。
这个时候可以只将字符串的一部分前缀建立索引,这样可以大大节约索引空间,从而提高索引效率。
目录
2.5、针对字段建立前缀索引,降低索引体积(可以截取前面多少个字符串substring)
2.6、这里我们选择n=5;查看索引,sub_part可以看到截取的长度
1、语法
这里的n是截取的字符串长度,例如n=5,取前五个字符
create index index_XXXX on table_name(column_name(n));
2、前缀长度n如何选择呢?
前缀长度n可以根据索引的选择性来决定。而选择性是的是不重复的索引值(基数)和数据表的记录总数的比值,碎银选择性越高则查询效率越高,唯一索引UNIQUE的选择性是1,这是最好的所以选择性,性能也是最好的,选择公式:
2.1、查询整张表不为空的值
select count(*) from tb_qianzhui;
2.2、查询email不为空的值
2.3、查询email不重复的值
select count(distinct email) from tb_qianzhui;
2.4、使用不重复的索引值/数据表记录总数
select count(distinct email)/ count(*) from tb_qianzhui;
得到查询比值是1
2.5、针对字段建立前缀索引,降低索引体积(可以截取前面多少个字符串substring)
select count(distinct substring(email,1,10))/count(*) from tb_qianzhui;
再降低,根据需求选择合适的n
2.6、这里我们选择n=5;查看索引,sub_part可以看到截取的长度
show index from tb_qianzhui;
原文地址:https://blog.csdn.net/wjl990316fddwjl/article/details/136309200
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!