0

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

问题归档 2019-05-08
285
摘要:疑问:请问下 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
数据库资讯
最新 热门 更多
本月热门
近期活动
全部
暂无活动,敬请期待...
相关课程
全部
暂无课程,敬请期待...