教程 mariadb tutorial

使用 EXPLAIN 优化查询

1. 什么是 EXPLAIN

EXPLAIN 用于展示 MariaDB 执行 SQL 查询时的执行计划,包含访问表的顺序、使用的索引、连接类型等信息,有助于发现查询中的性能问题。

2. 基本用法

在查询语句前加上 EXPLAIN:

sql
EXPLAIN SELECT * FROM users WHERE age > 30;

`

结果包含多列重要信息:

  • id:查询序列号。
  • select_type:查询类型(简单查询、联合查询等)。
  • table:访问的表名。
  • type:连接类型,性能依次递减,优选 const、eq_ref 等。
  • possible_keys:可能使用的索引。
  • key:实际使用的索引。
  • rows:估计扫描的行数。
  • Extra:额外信息,如是否使用临时表或文件排序。

3. 结合 EXPLAIN 优化查询

  • 确保查询条件使用了索引(key 列不为空)。
  • 避免全表扫描(type 不应为 ALL)。
  • 通过调整索引或重写 SQL 优化连接顺序。
  • 避免在 WHERE 子句对索引列使用函数或计算。

4. EXPLAIN ANALYZE

MariaDB 10.1 及以上版本支持 EXPLAIN ANALYZE,不仅显示执行计划,还实际执行查询并给出耗时:

sql
EXPLAIN ANALYZE SELECT * FROM users WHERE age > 30;

使用 EXPLAIN 可以精准定位查询性能瓶颈,指导索引设计和 SQL 优化,提高数据库效率。