自学内容网 自学内容网

索引使用规则5——前缀索引

前缀索引:当字段类型是字符串(varchar,text)的时候,有时候需要索引很长的字符串(文章标题或者内容),这会让索引变得很大,查询的时候,浪费大量的磁盘IO,影响查询效率。

怎么解决这类问题呢?我们又不可能把一整篇文章放进索引里面去。

这个时候可以只将字符串的一部分前缀建立索引,这样可以大大节约索引空间,从而提高索引效率。

目录

1、语法

2、前缀长度n如何选择呢?

2.1、查询整张表不为空的值

2.2、查询email不为空的值

2.3、查询email不重复的值

2.4、使用不重复的索引值/数据表记录总数

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)!