123
返回列表 发新帖
楼主: wanan_YLF

很奇怪的问题,explain 和 slowquery,谁在撒谎?

[复制链接]
论坛徽章:
8
双黄蛋
日期:2011-08-11 14:51:29蜘蛛蛋
日期:2011-08-15 20:53:08灰彻蛋
日期:2011-08-23 17:46:31ITPUB十周年纪念徽章
日期:2011-11-01 16:26:292012新春纪念徽章
日期:2012-01-04 11:57:56咸鸭蛋
日期:2012-01-09 11:14:00紫蛋头
日期:2012-03-20 17:08:01优秀写手
日期:2013-12-18 09:29:14
21#
 楼主| 发表于 2011-3-25 09:26 | 只看该作者
呵呵,这个帖子看了不下10遍,之前总有一点疑问,刚才又看了一遍,终于明白了...

使用道具 举报

回复
论坛徽章:
4
2011新春纪念徽章
日期:2011-04-15 12:20:32咸鸭蛋
日期:2011-08-05 11:40:05ITPUB十周年纪念徽章
日期:2011-11-01 16:26:292012新春纪念徽章
日期:2012-01-04 11:57:56
22#
发表于 2011-3-25 09:29 | 只看该作者
原帖由 wanan_YLF 于 2011-3-25 09:26 发表
呵呵,这个帖子看了不下10遍,之前总有一点疑问,刚才又看了一遍,终于明白了...


我不是很明白,我还得继续看啊!

使用道具 举报

回复
论坛徽章:
8
双黄蛋
日期:2011-08-11 14:51:29蜘蛛蛋
日期:2011-08-15 20:53:08灰彻蛋
日期:2011-08-23 17:46:31ITPUB十周年纪念徽章
日期:2011-11-01 16:26:292012新春纪念徽章
日期:2012-01-04 11:57:56咸鸭蛋
日期:2012-01-09 11:14:00紫蛋头
日期:2012-03-20 17:08:01优秀写手
日期:2013-12-18 09:29:14
23#
 楼主| 发表于 2011-3-25 09:32 | 只看该作者

回复 #22 mysqldbd 的帖子

之前我的回帖有一些都是因为看不太明白,问得有点傻,不要被我误导了。
在此感谢各位高手的答疑解惑。

使用道具 举报

回复
论坛徽章:
1
ITPUB十周年纪念徽章
日期:2011-11-01 16:26:29
24#
发表于 2011-3-25 10:48 | 只看该作者
楼主用的应该是MYISAM存储引擎,
meishiid我猜想是int,
userid我猜想是int

explain的ROWS是估算值,跟统计信息有关系,他不是一个准确值。
楼主的查询说了这个表有7W,楼主取值范围应该涉及好几万。
select MeiShiID,Title from fc_meishi_old where MeiShiID>12586 order by MeiShiID ASC LIMIT 0,1;
这个查询不会读取表的所有数据,根据下面的索引看
PRIMARY KEY (`MeiShiID`,`UserID`),
  KEY `Title` (`Title`,`MeiShiID`) USING BTREE,
SQL根据meishiid查询MeiShiID,Title,meishiid是主键前缀,mysql会选择搜索meishiid的索引,
但是从meishiid不能取得title,那么该值不是从索引中直接获取的,explain后面应该是using where,不出现using index。

MeiShiID>12586 表示一个范围查询,会查满足条件的所有值,所以后面ROWS不会是1.

PRIMARY KEY (`MeiShiID`,`UserID`), meishiid是前缀索引,而且是主键,
楼主order by MeiShiID ASC, 楼主的meishiid是自增长序列,索引是有序的,这里得到的就一个优化好的结果,不会using filesort。

limit 0,1读取第一行反馈给用户,这里的limit 0,1是从 SQL的结果集中读取第一行给用户。

limit不是一个优化MYSQL查询的可靠手段,如果SQL结果集很大,使用了limit 0,1仍然会很慢。直接让SQL返回合理的行数才是王道。


Rows sent     : 1 avg, 1 to 1 max  (0.35%)    这个虽然是统计信息,但可以知道是limit 0,1使用的结果。

Rows examined : 13.33k avg, 131 to 30.99k max  (7.98%)  这个和explain 的ROWS有关,但是他们一个是统计信息,一个是explain即时查询,没有可比性。要关注表的当前状况。


说了一大堆废话,我就是想说,楼主执行explain的时候,表里面满足MeiShiID>12586条件的值还有几个。

还有MeiShiID既然是自增的,那么MeiShiID>values,values越大,Rows examined应该越小才对啊。

使用道具 举报

回复
论坛徽章:
1
ITPUB十周年纪念徽章
日期:2011-11-01 16:26:29
25#
发表于 2011-3-25 10:53 | 只看该作者
哎呀呀。。。刚才没注意 已经有人回复了。
我还瞎说一通。

使用道具 举报

回复
论坛徽章:
8
双黄蛋
日期:2011-08-11 14:51:29蜘蛛蛋
日期:2011-08-15 20:53:08灰彻蛋
日期:2011-08-23 17:46:31ITPUB十周年纪念徽章
日期:2011-11-01 16:26:292012新春纪念徽章
日期:2012-01-04 11:57:56咸鸭蛋
日期:2012-01-09 11:14:00紫蛋头
日期:2012-03-20 17:08:01优秀写手
日期:2013-12-18 09:29:14
26#
 楼主| 发表于 2011-3-25 11:39 | 只看该作者

回复 #24 tangchaoql 的帖子

还有MeiShiID既然是自增的,那么MeiShiID>values,values越大,Rows examined应该越小才对啊。

-----------------------------------
我也觉得很奇怪...



哎呀呀。。。刚才没注意 已经有人回复了。
我还瞎说一通。

------------------------------------
依然十分感谢...

[ 本帖最后由 wanan_YLF 于 2011-3-25 12:00 编辑 ]

使用道具 举报

回复

您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

TOP技术积分榜 社区积分榜 徽章 团队 统计 知识索引树 积分竞拍 文本模式 帮助
  ITPUB首页 | ITPUB论坛 | 数据库技术 | 企业信息化 | 开发技术 | 微软技术 | 软件工程与项目管理 | IBM技术园地 | 行业纵向讨论 | IT招聘 | IT文档
  ChinaUnix | ChinaUnix博客 | ChinaUnix论坛
CopyRight 1999-2011 itpub.net All Right Reserved. 北京盛拓优讯信息技术有限公司版权所有 联系我们 未成年人举报专区 
京ICP备16024965号-8  北京市公安局海淀分局网监中心备案编号:11010802021510 广播电视节目制作经营许可证:编号(京)字第1149号
  
快速回复 返回顶部 返回列表