前缀索引

前缀索引 · MySQL优化 · 看云 https://www.kancloud.cn/lizhenjie1992/my/554979

通过字段前n位创建的索引就称为“前缀索引”。如果一个字段内容的前边的n位信息已经足够标识当前的字段内容,就可以把字段的前n位获得出来并创建索引,该索引占据空间更小、运行速度更快.

例如:

  • 关伟伟
  • 关小宝
  • 吕纪无
  • 刘尚香
  • 王云斐

以上4个记录信息创建索引,完全可以把第一个字给获得出来创建索引,第一个字完全可以唯一标识每个字段内容。

语法:

alter table  表名  add  key  (字段(前n位位数));

到底前几位可以唯一标识字段的内容?

获取制作前缀索引的n的信息:

  1. 去除字段重复内容并计算总数目.
  2. 取字段的前(n)1、2、3.....位不重复的信息并计算总数目,n从1开始不断累加,直到总数目 与 ①计算的总数目相等,此时n就是我们设计前缀索引的数字n信息.

mysql中截取字段的前n位信息,使用函数left(字段,长度).例如截取前5位信息: left(字段,5).

制作前缀索引

计算全部字段不重复记录的总条数:

select count(distinct 字段) from 表;

计算前n位不重复记录的总条数,n从1开始累加:

select count(distinct left(字段,n)) from 表;

比较两个统计的数据是否一致,如果一致就取N的值作为前缀索引. 前缀索引比普通索引速度要快很多.

 

posted @ 2024-04-23 18:06  papering  阅读(26)  评论(0编辑  收藏  举报