MySQL索引优化

2020/11/27 posted in  索引

1. 索引列上不能使用表达式或函数

2. 前缀索引和索引列的选择性

索引的选择性是不重复的索引值和表记录数的比值

3. 联合索引

  1. 经常被使用的列优先
  2. 选择性高的列优先
  3. 宽度小的列优先

4. 覆盖索引

优点

  1. 可以有优化缓存,减少磁盘IO操作
  2. 可以减少随机IO,变随机IO为顺序IO
  3. 可以避免对Innodb 主键索引的二次索引
  4. 可以避免MyISAM表进行系统调用

缺点

  1. 存储引擎不支持覆盖索引
  2. 查询使用太多列
  3. 使用双%号的like查询

优化查询

使用索引扫描来优化排序

  1. 通过排序操作
  2. 按照索引顺序扫描数据
使用条件
  1. 索引的列顺序和Order By子句中的顺序完全一致
  2. 索引中的所有列的方向和Order By 子句完全一致
  3. Order By中的字段全部在关联表中的第一张表

优化锁

  1. 索引可以减少锁定行数
  2. 索引可以加快处理速度,同时加快了锁的释放