索引优化策略
索引列上不能使用表达式或者函数
1 | # 以下对out_date使用了函数,所以是错误的 |
前缀索引和索引列的选择性
1 | CREATE INDEX index_name ON TABLE(col_name(n)); |
索引的选择性是不重复的索引值和表的记录数的比值
联合索引
如何选择联合索引列的顺序
- 经常用到的列优先选择
- 选择性高的列优先
- 宽度小的列优先使用
覆盖索引
优点
- 优化缓存,减少磁盘I/O操作
- 减少随机IO,变随机IO操作为顺序IO操作
- 可用避免InnoDB主键索引的二次查询
- 可避免MyISAM表进行系统调用
缺陷
- 不是所有搜索引擎都支持覆盖索引
- 查询中使用了太多的列
- 使用了双%的like查询