mysql索引
本文最后更新于:2022年8月11日 中午
回表
通过使用索引(非主键索引)查询到数据后,仍需通过主键id在主键索引上查询数据的过程,称为回表
覆盖索引
通过使用索引(非主键索引)查询到数据后,不需通过主键id在主键索引上查询数据,索引已经“覆盖了”我们的查询需求,我们称为覆盖索引
由于覆盖索引可以减少树的搜索次数,显著提升查询性能,所以使用覆盖索引是一个常用的性能优化手段
最左前缀原则
按照最左匹配原则进行判断是否使用索引
创建索引(name)
1 |
|
1 |
|
索引下推
创建联合索引(name, age)
1 |
|
在 MySQL 5.6 之前,待找到第一个符合张前缀的用户后开始一个个回表。到主键索引上找出数据行,再对比字段值
而 MySQL 5.6 引入的索引下推优化(index condition pushdown), 可以在索引遍历过程中,对索引中包含的字段先做判断,直接过滤掉不满足条件的记录,减少回表次数
参考文献
- MySQL实战45讲
- Data Structure Visualizations
mysql索引
https://baymax55.github.io/2022/06/01/mysql/mysql索引/