ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

mysql 专业笔记 -- 第 68 章:MySQL 性能提示

mysql 专业笔记 -- 第 68 章:MySQL 性能提示

第 68.1 节:构建复合索引

在许多情况下,复合索引比单列索引性能更好。要构建最优的复合索引,请按以下顺序填充列:

  1. 首先放WHERE子句中的等值条件列(例如INDEX(a,b,...)用于WHERE a=12 AND b='xyz' ...)
  2. IN列——优化器可能能够跳过索引中的某些部分。
  3. 一个“范围”条件列(例如x BETWEEN 3 AND 9、name LIKE 'J%')。注意:索引在遇到第一个范围列后,后面的列将不会被使用。
  4. GROUP BY中的所有列,按顺序。
  5. ORDER BY中的所有列,按顺序。只有在所有列都是升序(ASC)或都是降序(DESC),或者你使用的是 MySQL 8.0 时才有效。

注意和例外:

  • 不要重复列。
  • 跳过不适用的任何情况。
  • 如果没用完WHERE中的所有列,就没有必要继续到GROUP BY等。
  • 存在某些情况下,仅索引ORDER BY列(忽略WHERE)是有用的。
  • 不要将列“隐藏”在函数中(例如DATE(x) = ...不能使用x上的索引)。
  • “前缀索引”(例如text_col(99))不太可能有帮助,甚至可能有害。

更多详细信息和提示。

第 68.2 节:InnoDB 表的存储布局优化

RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进