MySQL 索引设计的几个核心原则
MySQL 是业务系统中最常见的数据库,但用好它并不容易。索引设计、SQL 优化、事务处理都是日常开发中需要关注的点。本文从实际场景出发,讲常见问题和解决思路。
准备一张示例表
以订单表为例:
CREATE TABLE orders ( |
查询订单列表时,很多人会直接写:
SELECT * FROM orders |
这时可以考虑组合索引:
CREATE INDEX idx_user_status_time |
必须用 EXPLAIN 验证
优化 SQL 不要凭感觉,先看执行计划:
EXPLAIN SELECT * FROM orders |
重点看 key 是否命中索引,rows 是否明显下降。如果只是建了索引但执行计划没变化,那说明索引设计可能不贴合查询条件。
常见坑
- 在索引列上使用函数,可能导致索引失效。
- 字段类型不一致,例如字符串和数字混用,会影响优化器选择。
- 大 offset 分页会越来越慢,可以改成基于 id 的游标分页。
核心要点
索引设计的原则:最左前缀原则、避免索引列参与计算、选择合适的索引类型
SQL 优化的方法:使用 EXPLAIN 分析执行计划、避免 SELECT *、优化 JOIN
事务隔离级别的选择:根据业务需求选择合适的级别
常见的锁问题:行锁、表锁、死锁的处理
总结
MySQL 优化是一个持续的过程,需要结合业务特点和数据量来调整。在实际项目中,定期分析慢查询日志、优化索引、调整配置参数,都能提升数据库性能。