创建高性能的索引:

  • 独立的列:索引列不能是表达式的一部分;
  • 选择区分度高的列作为索引;
  • 选择合适的索引列顺序:将选择性高的索引列放在最前列;
  • 覆盖索引:查询的列均在索引中,不需要回查聚簇索引;
  • 使用索引扫描来做排序;
  • 在遵守最左前缀的原则下,尽量扩展索引,而不是创建索引。

索引失效场景

  • OR查询左右有未命中索引的;
  • 复合索引不满足最左匹配原则;
  • Like以%开头;
  • 需要类型转换;
  • where中索引列有运算;
  • where中索引列使用了函数;
  • 如果mysql觉得全表扫描更快时(数据少时)