美文网首页
【八股】什么叫做mysql的索引下推

【八股】什么叫做mysql的索引下推

作者: 小胖学编程 | 来源:发表于2023-03-30 19:26 被阅读0次

    1. chatGPT解释

    MySQL的索引下推(Index Condition Pushdown,ICP)是一种优化技术,它将WHERE子句中的条件下推到索引层级进行过滤,以减少数据库服务器需要扫描的行数,提高查询性能。它能够利用索引提供的额外信息进行优化,尽可能地减少对表的访问,因此在大型数据集上非常有用。

    简单来说,当MySQL查询时,它可以在读取表之前对索引进行过滤,以排除不符合条件的行,这样可以减少表扫描的次数和所需的IO操作。通过使用索引下推,MySQL可以更有效地处理WHERE子句和其他限制条件,并更快地返回结果。

    总之,索引下推是MySQL数据库的一种优化技术,能够利用索引提供的额外信息进行优化,尽可能减少对表的访问,提高查询性能。

    2. 背景知识

    2.1 回表查询

    MySql性能(3)—InnoDB中的聚簇索引和普通索引

    innodb的聚簇索引.png

    mysql普通索引(二级索引)中存储的是主键id,如果要查询到表记录,需要进行回表查询。

    回表查询.png

    2.2 索引下推

    MySQL的索引下推(Index Condition Pushdown,ICP)是一种优化技术,它将WHERE子句中的条件下推到索引层级进行过滤,以减少数据库服务器需要扫描的行数,提高查询性能。它能够利用索引提供的额外信息进行优化,尽可能地减少对表的访问,因此在大型数据集上非常有用。
    简单来说,当MySQL查询时,它可以在读取表之前对索引进行过滤,以排除不符合条件的行,这样可以减少表扫描的次数和所需的IO操作。通过使用索引下推,MySQL可以更有效地处理WHERE子句和其他限制条件,并更快地返回结果。

    对应场景:

    • 在开始之前先先准备一张用户表(user),其中主要几个字段有:id、name、age、address。建立联合索引(name,age)。
    SELECT * from user where  name like '陈%' and age=11
    
    • 根据 "最佳左前缀" 的原则,这里使用了联合索引(name,age)进行查询,但是仅使用到了name索引。
    索引下推.png

    核心原理:将where条件筛选下推到二级索引检索主键id时,以减少回表次数。

    相关文章

      网友评论

          本文标题:【八股】什么叫做mysql的索引下推

          本文链接:https://www.haomeiwen.com/subject/ghlcddtx.html