5个MySQL小技巧,让你的查询飞起来
MySQL 是后端开发中最常用的数据库,掌握一些实用技巧能显著提升查询效率。分享几个我经常用的技巧:
1. 巧用 EXPLAIN 分析执行计划
写查询前先跑 EXPLAIN SELECT ...,重点关注 type 列:ALL 代表全表扫描,ref 或 range 才理想。Extra 中出现 Using filesort 或 Using temporary 往往是性能杀手。
2. 前缀索引节省空间
对于长文本字段(如 VARCHAR(255)),直接建全列索引浪费空间。可用前缀索引:ALTER TABLE t ADD INDEX idx_name (name(20))。长度选择原则:基数接近全列基数即可。
3. 延迟关联优化分页
深分页 LIMIT 100000, 10 极慢。改写为延迟关联:
SELECT * FROM t
INNER JOIN (
SELECT id FROM t ORDER BY id LIMIT 100000, 10
) AS tmp ON t.id = tmp.id
先走覆盖索引查出主键,再回表取数据。
4. 批量操作使用 CASE WHEN
需要更新多行不同值时,别写多个 UPDATE。一条搞定:
UPDATE t SET score = CASE id
WHEN 1 THEN 90
WHEN 2 THEN 85
END WHERE id IN (1,2)
5. INSERT ... ON DUPLICATE KEY UPDATE
替代先 SELECT 再判断 UPDATE 或 INSERT 的繁琐逻辑,一条语句实现“存在则更新,否则插入”。
记住:技巧再好,不如建好索引、写对业务逻辑。多跑 EXPLAIN,慢查询自然远离你。