5个提升MySQL查询效率的实用技巧
在日常开发中,MySQL的查询性能往往是系统的瓶颈。掌握下面几个技巧,能帮你轻松写出更高效的SQL。
1. 避免在WHERE子句中对字段使用函数
❌ 低效写法:SELECT * FROM orders WHERE DATE(create_time) = '2024-01-01'
✅ 高效写法:SELECT * FROM orders WHERE create_time BETWEEN '2024-01-01' AND '2024-01-01 23:59:59'
对字段使用函数会让索引失效,导致全表扫描。
2. 优先使用覆盖索引
如果查询只需要索引中的列,就尽量让索引“覆盖”查询。比如建立(user_id, order_amount)联合索引后:
SELECT user_id, order_amount FROM orders WHERE user_id = 123
MySQL直接读取索引就能返回结果,无需回表,速度提升明显。
3. 合理使用EXPLAIN分析执行计划
在慢查询前加EXPLAIN,重点关注:
type:至少达到range或ref,避免ALLpossible_keysvskey:看是否用上了预期索引Extra中出现Using filesort或Using temporary通常需要优化
4. 分页深翻页优化
LIMIT 100000, 10会导致MySQL扫描10万+10行。改进方案:先通过索引筛选出ID范围,再关联查询。
SELECT * FROM orders
WHERE id > (SELECT id FROM orders ORDER BY id LIMIT 100000, 1)
LIMIT 10;
5. 批量操作代替循环单条执行
需要插入或更新多条数据时,用一条INSERT INTO ... VALUES (...), (...), (...)或CASE WHEN批量更新,减少网络往返和事务开销。
以上技巧在日常开发中非常实用,下次遇到慢查询不妨对照排查一遍。