#### 什么是前缀索引
通过字段前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的值作为前缀索引. 前缀索引比普通索引速度要快很多.
- MySQL优化概述
- 存储引擎的选择
- innodb引擎
- myisam引擎
- memory引擎
- 查询需优化语句
- 通用查询日志
- 慢查询日志
- profile机制
- 索引
- 索引基本介绍
- 索引类型
- 索引管理语法
- 创建索引主要事项
- 执行计划
- 查看索引类型
- myisam索引数据结构
- innodb索引数据结构
- 索引覆盖
- 索引使用原则
- 列独立
- like查询
- 复合索引使用
- or运算都具有索引
- mysql智能选择
- 优化group by语句
- 前缀索引
- 全文索引
- 查询缓存
- 查询缓存操作
- 无缓存
- limit分页优化
- 分区
- 分区介绍
- list分区
- range分区
- hash分区
- key(键值)分区
- 分区管理
- 分表
- 分表介绍
- 水平分表
- 垂直分表
- MySQL锁机制
- 锁机制介绍
- 锁的几种形式
- 表锁操作
- 行锁操作
- 数据碎片与维护
- 范式
- 第一范式
- 第二范式
- 第三范式
- 反三范式
- 主从复制
- 介绍
- 读写分离