版权声明:本文为博主原创文章,未经博主允许不得转载。 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=‘男’)