数据库如何使用索引避免全表扫描?优化慢查询技巧
索引优化技巧
场景 | 解决方案 |
---|---|
基础索引添加 | 对WHERE高频字段(如user_id )创建索引:ALTER TABLE orders ADD INDEX (user_id) 。 |
复合索引设计 | 联合查询字段(如status+created_at )建索引:ADD INDEX (status, created_at) 。 |
避免索引失效 | 禁止对索引列运算(如WHERE YEAR(create_time)=2024 改为范围查询)。 |
覆盖索引 | 查询字段均包含在索引中时,直接读索引不查表(如SELECT id FROM table WHERE key=1 )。 |
慢查询处理
- 工具诊断:用
EXPLAIN
分析执行计划,关注type
为ALL的全表扫描。 - 查询拆分:大表分页用
LIMIT 10000,10
改为WHERE id>上次最大值 LIMIT 10
。 - 定期维护:每周执行
OPTIMIZE TABLE
减少碎片,或配置pt-online-schema-change无锁变更。
更新时间:2025-07-22 16:24:24
上一篇:PHP网站模板如何添加新页面?