大家好,我是 Snow Hide,作为《MySQL 实战》这个专栏的学员之一,这是我打卡的第 32 天,也是我第 95 次进行这种操作。
今天我温习了该专栏里叫《普通索引和唯一索引,应该怎么选择?》、《MySQL 为什么有时候会选错索引?》、《怎么给字符串字段加索引?》的文章。
关键词总结:查询过程(普通索引、唯一索引)、更新过程(change buffer 使用条件、目标页在内存中的处理流程、目标页不在内存中的处理流程)、change buffer 的使用场景(适用的场景、不适用的场景)、索引选择和实践(尽量选普通索引、机械硬盘环境下)、change buffer 和 redo log(redo log 所优化的方面、change buffer 所优化的方面)、优化器逻辑(最优执行方案、综合判断、判断扫描行数、获得索引基数、两种存储索引统计的方式)、索引选择异常和处理(采用 force index 强行选择一个索引、引导 MySQL 使用我们期望的索引、新建一个更合适的索引,供优化器做选择,或删掉误用的索引)、如何为邮箱字段建立合理的索引?(创建前缀索引、前缀索引可能产生的问题、建立索引时需要关注的点)、前缀索引对覆盖索引的影响(无法利用覆盖索引)、其他处理方式(倒序存储、使用 hash 字段、两种方法的区别)、字符串字段创建索引的几种方式。
所学总结:
普通索引和唯一索引,应该怎么选择?
查询过程
- 普通索引
- 唯一索引
更新过程
- change buffer 使用条件
- 目标页在内存中的处理流程
- 目标也不在内存中的处理流程
change buffer 的使用场景
- 适用的场景
- 不适用的场景
索引选择和实践
- 尽量选普通索引
- 机械硬盘环境下
change buffer 和 redo log
- redo log 所优化的方面
- change buffer 所优化的方面
MySQL 为什么有时候会选错索引?
优化器逻辑
- 最优执行方案
- 综合判断
- 判断扫描行数
- 获得索引基数
- 两种存储索引统计的方式
索引选择异常和处理
- 采用 force index 强行选择一个索引
- 引导 MySQL 使用我们期望的索引
- 新建一个更合适的索引,供优化器做选择,或删掉误用的索引
怎么给字符串字段加索引?
如何为邮箱字段建立合理的索引?
- 创建前缀索引
- 前缀索引可能产生的问题
- 建立索引时需要关注的点
前缀索引对覆盖索引的影响
- 无法利用覆盖索引
其他处理方式
- 倒序存储
- 使用 hash 字段
- 两种方法的区别
字符串字段创建索引的几种方式
- 完整索引
- 前缀索引
- 倒序存储
- hash 字段及其索引
末了
重新总结了一下文中提到的内容:普通索引和唯一索引的选择、数据的查询和更新过程、change buffer 的机制以及应用场景、索引选择的实践、索引统计的更新机制、优化器存在选错索引的可能性、索引统计信息不准确导致的问题、在应用端用 force index 来强行指定索引、如何为邮箱字段建立合理的索引?、前缀索引对覆盖索引的影响、其他处理方式、字符串字段创建索引的几种方式。