高性能MySQL实战(三):性能优化

💡 原文中文,约9500字,阅读约需23分钟。
📝

内容提要

本文介绍了优化慢 SQL 的方法,包括使用 EXPLAIN、优化联结查询、索引合并、优化 COUNT()、优化 UNION 查询、优化 OFFSET、使用 WITH ROLLUP 优化 GROUP BY、OPTIMIZE TABLE、修复损坏的表等。同时,还介绍了排序时索引失效、索引列不为空的优化、重复索引和冗余索引等问题。

🎯

关键要点

  • 本文介绍了优化慢 SQL 的方法,包括使用 EXPLAIN。

  • EXPLAIN 是分析查询计划的工具,有助于优化 SQL。

  • 优化考虑点包括基于访问类型优化和减少扫描行数的优化。

  • 优化联结查询时需确保 ON 或 USING 子句中的列上有索引。

  • IN() 条件在 MySQL 中处理速度更快,优于多个 OR 条件。

  • 查询时索引失效的原因包括未按索引的最左列查找。

  • 排序时索引失效的原因包括 ORDER BY 列顺序不正确。

  • 索引列不为空可以提高 Min() 和 Max() 操作的效率。

  • 重复索引和冗余索引应当避免,尽量扩展已有索引。

  • 索引合并策略可以提高查询性能,但通常需要联合索引。

  • 优化 COUNT() 查询时应指定列名或使用 COUNT(*)。

  • 使用 UNION ALL 代替 UNION 可以提高 UNION 查询的性能。

  • OFFSET 会导致大量不必要的行扫描,建议使用书签方式优化分页查询。

  • 使用 WITH ROLLUP 优化 GROUP BY 查询。

  • OPTIMIZE TABLE 可以整理内存碎片,提高查询效率。

  • 通过 CHECK TABLE 和 REPAIR TABLE 可以找到并修复损坏的表。

➡️

继续阅读