WHERE条件无匹配值为何还有排序消耗

问题归档 2019-05-08
15
0 0
摘要:疑问:请问下 b=0 并无匹配值为何还有排序消耗,难道order by在where之前执行吗?

问题描述

表情况:tab_t 数据库20w,b=0无结果,表上无索引。

现象:语句频繁执行,show processlist看到执行时间为0,但是state:creating sort index。explain Extra : filesort,通过profile看到creating sort index耗时最长,而不加order by c 时看到sending data耗时最长(此sending data位于query end之前)

疑问:请问下 b=0 并无匹配值为何还有排序消耗,难道order by在where之前执行吗?

专家解答

顺序应该是如下:where->order by->limit,消耗实在order by 上 用 file sorting 部分。

确认下来应该是bug,参考下面

1.sql语句如下

image.png

2.show profile for query 15;确认问题在于 order  by 部分

3.sql\filresort.cc 里 看了源代码,没有判断rowcount=0值的情况下,停止处理的部分

   merge_buffers部分 ,大概是这部分代码。

image.png

「喜欢文章,快来给作者赞赏墨值吧」

评论

0
0
MySQL
订阅
欢迎订阅MySQL频道,订阅之后可以获取最新资讯和更新通知。
墨值排行
今日本周综合
近期活动
全部
相关课程
全部