
第 68.1 节:构建复合索引在许多情况下,复合索引比单列索引性能更好。要构建最优的复合索引,请按以下顺序填充列:首先放WHERE子句中的等值条件列(例如INDEX(a,b,...)用于WHERE a=12 AND b='xyz' ...)IN列——优化器可能能够跳过索引中的某些部分。一个“范围”条件列(例如x BETWEEN 3 AND 9、name LIKE 'J%')。注意:索引在遇到第一个范围列后,后面的列将不会被使用。GROUP BY中的所有列,按顺序。ORDER BY中的所有列,按顺序。只有在所有列都是升序(ASC)或都是降序(DESC),或者你使用的是 MySQL 8.0 时才有效。注意和例外:不要重复列。跳过不适用的任何情况。如果没用完WHERE中的所有列,就没有必要继续到GROUP BY等。存在某些情况下,仅索引ORDER BY列(忽略WHERE)是有用的。不要将列“隐藏”在函数中(例如DATE(x) = ...不能使用x上的索引)。“前缀索引”(例如text_col(99))不太可能有帮助,甚至可能有害。更多详细信息和提示。第 68.2 节:InnoDB 表的存储布局优化