在处理海量数据时,数据库查询性能往往是系统的瓶颈。而索引(Index)是提升数据库查询性能最有效的手段之一。本文将总结 MySQL 索引的核心原理及优化策略。
索引的本质
索引的本质是数据结构。在 MySQL 中,最常用的索引数据结构是 B+ 树。B+ 树通过减少磁盘 I/O 次数,极大地加快了数据的检索速度。
最左前缀原则
在创建联合索引时,必须遵循最左前缀原则。例如,创建了 (a, b, c) 的联合索引,那么查询 a、a, b、a, b, c 都可以走到索引,但查询 b 或 c 则无法使用该索引。
-- 可以使用索引
SELECT * FROM table WHERE a = 1;
SELECT * FROM table WHERE a = 1 AND b = 2;
-- 无法使用索引
SELECT * FROM table WHERE b = 2;
常见优化建议
- 覆盖索引:尽量让查询的字段都包含在索引中,避免回表查询。
- 避免在索引列上做运算:这会导致索引失效。
- 选择合适的区分度:区分度越高的列越适合建索引。