Skip to content

Latest commit

 

History

History
70 lines (46 loc) · 1.47 KB

File metadata and controls

70 lines (46 loc) · 1.47 KB

优化查询

查询优化往往是 MySQL 性能优化中最先着手的部分,因为大多数性能问题最终都会落到 SQL 执行效率上。

分析查询语句

优化 SQL 的第一步不是改写,而是分析。

最常见的方法是使用:

EXPLAIN SELECT * FROM user WHERE city = '上海';

EXPLAIN 可以帮助我们了解:

  • 是否使用了索引
  • 扫描了多少行
  • 连接顺序是否合理
  • 是否出现了全表扫描

索引对查询速度的影响

没有索引时,MySQL 可能需要扫描整张表; 有合适索引时,则可以更快定位记录。

例如:

SELECT *
FROM user
WHERE mobile = '13800000001';

如果 mobile 上建立了索引,查询效率通常会明显提高。

使用索引查询

索引通常更适合以下场景:

  • 精确匹配
  • 范围查询
  • 排序和分组
  • 连接字段匹配

例如:

SELECT *
FROM orders
WHERE user_id = 1
ORDER BY created_at DESC;

如果 user_idcreated_at 的使用模式稳定,就值得考虑针对性索引设计。

优化子查询

某些子查询执行效率较低时,可以考虑:

  1. 改写为连接查询
  2. 通过索引提升子查询效率
  3. 避免不必要的嵌套层级

例如某些 IN (子查询)EXISTS 查询,在数据量较大时就需要特别关注执行计划。

小结

优化查询的核心是:先分析,再改写,最后验证。高频慢 SQL 的优化收益通常远高于零散小优化。