1. 索引列上不能使用表达式或函数
2. 前缀索引和索引列的选择性
索引的选择性是不重复的索引值和表记录数的比值
3. 联合索引
- 经常被使用的列优先
- 选择性高的列优先
- 宽度小的列优先
4. 覆盖索引
优点
- 可以有优化缓存,减少磁盘IO操作
- 可以减少随机IO,变随机IO为顺序IO
- 可以避免对Innodb 主键索引的二次索引
- 可以避免MyISAM表进行系统调用
缺点
- 存储引擎不支持覆盖索引
- 查询使用太多列
- 使用双%号的like查询
优化查询
使用索引扫描来优化排序
- 通过排序操作
- 按照索引顺序扫描数据
使用条件
- 索引的列顺序和Order By子句中的顺序完全一致
- 索引中的所有列的方向和Order By 子句完全一致
- Order By中的字段全部在关联表中的第一张表
优化锁
- 索引可以减少锁定行数
- 索引可以加快处理速度,同时加快了锁的释放
