5个让MySQL查询飞起来的实用技巧

简介: 5个让MySQL查询飞起来的实用技巧

5个让MySQL查询飞起来的实用技巧

MySQL 用得好是神器,用不好就是“查询慢如牛”。分享几个我踩坑无数后总结的技巧,帮你少走弯路。

1. 避免 SELECT *,只取所需字段

SELECT * 会返回所有列,不仅浪费网络带宽,还会让覆盖索引失效。只取需要的字段,比如 SELECT id, name,性能提升立竿见影。

2. 合理使用 EXPLAIN 分析执行计划

写好的查询别急着跑,先 EXPLAIN 一下。重点关注 type 列:ALL 代表全表扫描,要尽量优化到 refrangekey 列显示实际用到的索引,如果是 NULL 说明没走索引。

3. 索引不是越多越好

每多一个索引,INSERT/UPDATE/DELETE 就要多维护一棵 B+ 树。遵循“最左前缀原则”,比如联合索引 (a, b, c),能覆盖 aa,ba,b,c 的查询,但单独查 b 用不上。冗余索引(如已有 (a) 又建 (a,b))建议删除。

4. 慎用 LIKE '%keyword%'

前置通配符会让索引失效,只能全表扫。如果业务允许,改为 LIKE 'keyword%' 或使用全文索引 MATCH ... AGAINST

5. 分页深翻页优化

LIMIT 100000, 10 会先扫 10 万条再丢弃,效率极低。改用“延迟关联”或“记录上次位置”:

-- 延迟关联:先查主键,再回表
SELECT * FROM posts 
WHERE id IN (SELECT id FROM posts ORDER BY id LIMIT 100000, 10);

更优方案:记住上一页最大 id,WHERE id > last_id ORDER BY id LIMIT 10


用好这 5 招,告别慢查询。你还遇到过哪些 MySQL 的坑?欢迎讨论!

相关文章
|
2月前
|
SQL 关系型数据库 MySQL
5个提升MySQL查询效率的实用技巧
5个提升MySQL查询效率的实用技巧
|
2月前
|
SQL 移动开发 关系型数据库
MySQL技巧:利用窗口函数高效去重,告别嵌套子查询
MySQL技巧:利用窗口函数高效去重,告别嵌套子查询
|
2月前
|
Python
3个让你爱不释手的Python冷门技巧
3个让你爱不释手的Python冷门技巧
343 146
|
2月前
|
索引 Python
5个让你爱不释手的Python实用技巧
5个让你爱不释手的Python实用技巧
260 146
|
2月前
|
开发者 Python
Python 中鲜为人知的 `else` 子句:不止用于条件判断
Python 中鲜为人知的 `else` 子句:不止用于条件判断
360 150
|
2月前
|
关系型数据库 MySQL Serverless
MySQL 技巧:巧用窗口函数计算累计值
MySQL 技巧:巧用窗口函数计算累计值
|
2月前
|
SQL 关系型数据库 MySQL
MySQL 技巧:用好窗口函数,告别复杂子查询
MySQL 技巧:用好窗口函数,告别复杂子查询
|
1月前
|
人工智能 Linux API
VS Code 1.113 发布:Agent 与 Chat 体验全面升级!
VS Code 1.113 正式发布!聚焦AI开发体验升级:全面增强Agent能力(支持CLI/Claude代理的MCP、会话分支、嵌套子代理、调试日志),优化Chat体验(统一自定义编辑器、模型推理努力直调、图像预览查看器),大幅提升智能编程效率。
672 12
|
2月前
|
PHP 索引
PHP 技巧:用 `array_map` 一键处理数组,告别 `foreach` 噩梦
PHP 技巧:用 `array_map` 一键处理数组,告别 `foreach` 噩梦
432 141
|
1月前
|
索引 Python
5个让你惊艳的Python一行代码技巧
5个让你惊艳的Python一行代码技巧
269 142

热门文章

最新文章