赞
踩
在数据库查询优化中,当一个索引包含了SQL查询语句所需要的全部列时,数据库可以直接使用索引来获取所有数据,而无需回表访问实际的数据行,这就实现了索引覆盖。
具体场景及特点:
SELECT a FROM table
,如果存在索引(a),则不需要回表。SELECT a, b FROM table WHERE a = 2
,若存在复合索引(a, b),即使需要返回多个列,由于它们都在索引中,因此也能实现索引覆盖,无须回表。总之,索引覆盖能够显著提升查询性能,因为它减少了对主键或聚簇索引的查找次数以及磁盘I/O操作。为了最大化地利用索引覆盖,设计索引时应考虑将经常一起查询和用于筛选条件的列放入同一个复合索引中。
索引下推是一种数据库查询优化技术,它允许数据库在遍历索引时直接在索引内部执行部分过滤条件,从而减少回表操作和数据访问次数,提高查询性能。
适用场景:
(a, b)
,查询语句 SELECT a, b FROM table WHERE a = 2 AND b > 5
,MySQL会先根据a=2
筛选记录,然后在索引中进一步筛选出满足b>5
的记录。SELECT a, b FROM table WHERE a = 2 AND b > 1
,如果存在单列索引a
,则先通过索引找到所有a=2
的记录,然后再逐一回表检查b > 1
的条件。注意点:
总之,索引下推是优化SQL查询的重要手段,尤其在处理复合索引时,它能让数据库更高效地利用索引结构进行数据筛选,降低I/O开销并加快查询速度。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。