💖The Begin💖点点关注,收藏不迷路💖
|
在数据库查询中,覆盖索引是一个能显著提升性能的特性。即当查询的列完全包含在索引中时,数据库就能直接从索引中读取数据,无需再访问数据表本身,这就是覆盖索引。
1、覆盖索引的优势
- 减少I/O:直接通过索引获取数据,减少磁盘访问。
- 提升速度:查询更快,因为跳过了数据行的查找。
2、使用场景
以MySQL的InnoDB引擎为例,如果你在组合索引上查询的列全部包含在索引中,且查询条件符合索引的最左前缀原则(或虽不符合但索引能覆盖查询列),那么就能利用覆盖索引。
3、示例
假设有user_like
表,有组合索引(user_id, blog_id)
。
- 查询
SELECT blog_id FROM user_like WHERE user_id = 13;
:覆盖索引,因为blog_id
在索引中,且user_id
满足最左前缀。 - 查询
SELECT user_id FROM user_like WHERE blog_id = 1;
:也利用覆盖索引,尽管blog_id
不是最左前缀,但索引能覆盖查询列。
4、注意事项
- 不是所有索引类型都支持覆盖索引,如哈希索引和全文索引。
- 设计索引时,考虑查询模式,尽量利用覆盖索引。
💖The End💖点点关注,收藏不迷路💖
|