暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

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

原创 问题归档 2019-05-08
1540

问题描述

表情况: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

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论