當你的項目越來越龐大,數據庫查詢越來越頻繁,「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 編輯過