索引使用规则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;

  • 11
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值