五个让你SQL性能飙升的优化技巧
|
admin
2025年6月15日 23:12
本文热度 42
|
当你的项目越来越庞大,数据库查询越来越频繁,「SQL 的执行效率就成了瓶颈」。不少开发者发现页面越来越慢,排查之后发现:原来罪魁祸首是写得“太随意”的 SQL。
今天我总结了五个实用又易上手的 SQL 优化技巧,每个都可以立刻上手验证,建议收藏!
1️⃣ 合理使用索引,但别乱建
索引是数据库性能的利器,但也是双刃剑。
✅ 使用索引可以加快查询速度
❌ 乱建索引、重复索引会拖慢写入速度,还占空间
「推荐做法:」
- 常用于
WHERE
、JOIN
、ORDER BY
的字段要建索引
-- 优化前
SELECT * FROM users WHERE status = 'active' AND age = 25;
-- 优化后
CREATE INDEX idx_status_age ON users(status, age);
2️⃣ SELECT 指定字段,别用 *
-- 不推荐
SELECT * FROM orders;
-- 推荐
SELECT id, order_no, status FROM orders;
这样不仅网络传输更轻量,数据库执行计划也更高效。
3️⃣ 控制子查询 / 嵌套查询
子查询容易导致全表扫描。
-- 优化前
SELECT * FROM products
WHERE id IN (SELECT product_id FROM order_items WHERE order_id = 1001);
-- 优化后
SELECT p.* FROM products p
JOIN order_items oi ON p.id = oi.product_id
WHERE oi.order_id = 1001;
JOIN 可读性更强,也更容易走索引。
4️⃣ 深分页改用游标分页
-- 深分页性能差
SELECT * FROM articles ORDER BY create_time DESC LIMIT 10000, 10;
-- 推荐方式
SELECT * FROM articles
WHERE create_time < '2024-01-01 00:00:00'
ORDER BY create_time DESC LIMIT 10;
游标分页效率更高,尤其在大数据量场景下。
5️⃣ 学会使用 EXPLAIN
EXPLAIN SELECT * FROM orders WHERE status = 'paid';
重点关注:
Extra
中是否包含 Using filesort / Using temporary
✅ 总结
阅读原文:原文链接
该文章在 2025/6/16 9:05:11 编辑过