mysql查询流程分析

CREATE TABLE `t` (
  `id` int(11) NOT NULL,a
  `a` varchar(10) NOT NULL,
  'b' varchar(10) default null,
  PRIMARY KEY (`id`),
  KEY `city` (`a`)
) 

假如表里有100万行数据,其中有10万行数据的a字段值是'1234567890'。

那么语句: select * from t where a='1234567890ab'  的执行流程是怎么样的?

这条查询语句执行很慢。流程如下:

1.在将条件匹配值传给执行引擎的时候,做了字符截断,只取前10个字节,即根据'1234567890'去匹配

2.匹配到满足条件的数据有10万行, 由于是select *,且二级索引没有命中全字段,所以要进行10万次回表取到全字段;

3.每次回表查出整行后,到server再次进行条件筛选,a的值都不是'1234567890ab',

4.返回结果是空。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值