mysql查询语句where条件执行过程分析

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/yaonga/article/details/84541476
  • 前提:
    mysql逻辑架构
    存在索引index(name,age)
    一个select语句一次只会查询一次索引(index merge除外)
    记录有:
    1:name=‘zhangsan’ age=10
    2:name=‘zhangsan’ age=20
    3:name=‘lisi’ age=20
  • 问:
    select * from user where name=‘zhangsan’ and age=20 and sex=‘男’
    此查询语句mysql数据库的执行过程分析?
  • 答:
    此where条件包含mysql处理不同条件类型:
    index key:第一个索引列,用于确定索引范围(确定了1和2记录,索引结构B+树是有顺序的),发生在存储引擎层
    index filter:对索引进行过滤,需要ICP的支持(将index filter从原来的service层下放到存储引擎层),发生在存储引擎层(确定了记录2)
    table filter:索引中没有的条件,对表进行过滤,发生在service层(过滤sex=‘男’)

猜你喜欢

转载自blog.csdn.net/yaonga/article/details/84541476