baby sword‘s blog baby sword‘s blog
首页
  • java基础
  • java进阶
大数据
  • mysql

    • mysql索引
    • mysql日志
  • redis

    • 单机下的redis
    • 集群下的redis
  • Spring
  • springboot
  • RPC
  • netty
  • mybatis
  • maven
  • 消息队列
  • kafka
  • zookeeper
  • rocketmq
  • 七大设计原则
  • 创建型模式
  • 结构型模式
  • 行为型模式
  • SpringCloud

    • eureka
  • SpringCloud Alibaba

    • nacos
  • 计算机网络
  • 操作系统
  • 算法
  • 个人项目
  • 个人面试面经
  • 八股记忆
  • 工作积累
  • 逻辑题
  • 面试

    • 百度后端实习二面
GitHub (opens new window)

zhengjian

不敢承担失去的风险,是不可能抓住梦想的
首页
  • java基础
  • java进阶
大数据
  • mysql

    • mysql索引
    • mysql日志
  • redis

    • 单机下的redis
    • 集群下的redis
  • Spring
  • springboot
  • RPC
  • netty
  • mybatis
  • maven
  • 消息队列
  • kafka
  • zookeeper
  • rocketmq
  • 七大设计原则
  • 创建型模式
  • 结构型模式
  • 行为型模式
  • SpringCloud

    • eureka
  • SpringCloud Alibaba

    • nacos
  • 计算机网络
  • 操作系统
  • 算法
  • 个人项目
  • 个人面试面经
  • 八股记忆
  • 工作积累
  • 逻辑题
  • 面试

    • 百度后端实习二面
GitHub (opens new window)
  • mysql

    • mysql索引

      • 什么是索引下推
        • 二.使用条件
      • 索引失效的情况
      • mysql优化成本计算
      • 什么是前缀索引
    • mysql日志

    • 其他

  • redis

  • MongoDB

  • 后端存储实战

  • 数据库
  • mysql
  • mysql索引
xugaoyi
2022-12-27
目录

什么是索引下推

# 一.ICP (index Condition Pushdown)索引下推

服务于联合索引,mysql5.6之后的新特性

image-20221227172820799

如上图所示,建立联合索引(name,age)

之后我们使用查询语句select * from tuser where name like '张%' and age =10

在5.6之前

  1. 通过联合索引查询到张猛和张三的主键
  2. 拿着主键1,4进行回表两次从而查到完整的数据,并在完整的数据集中比对age是否等于10再进行过滤

缺点:回表次数较多,从而增加了io次数

5.6之后,出现索引下推

  1. 根据联合索引最左匹配原则会拿到张猛和张三两条数据
  2. 索引下推:如果能在二级索引中拿到age,直接进行过滤,最后满足条件的再进行回表
  3. 张猛和张三通过索引下推过滤掉张猛,最后张三通过1次回表获得完整数据

优点:通过在二级索引树上搜索时提前过滤减少回表次数,从而减少io次数。

# 二.使用条件

  • 建立了联合索引
  • 需要过滤的索引也必须在联合索引中

例如:

sql语句:select * from tuser where name like '张%' and address='成都'

address是没有出现在联合索引中,就无法使用索引下推

对于innodb引擎中icp只用于辅助索引。如果引用了子查询、或者存储过程,索引下推就会失效。

  • 如何知道是否使用了索引下推?

使用explain语句,在extra中可以看到use index condition

编辑 (opens new window)
上次更新: 2024/02/22, 14:03:19
索引失效的情况

索引失效的情况→

最近更新
01
spark基础
02-22
02
mysql读写分离和分库分表
02-22
03
数据库迁移
02-22
更多文章>
Theme by Vdoing | Copyright © 2019-2024 Evan Xu | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式