楼主: yxyup

[精华] Mysql Explain 详解

[复制链接]
论坛徽章:
0
发表于 2009-9-30 23:34 | 显示全部楼层
ding ding ding idng ding ding

使用道具 举报

回复
论坛徽章:
27
数据库板块每日发贴之星
日期:2005-12-22 01:01:31ITPUB十周年纪念徽章
日期:2011-11-01 16:21:152012新春纪念徽章
日期:2012-02-13 15:12:092012新春纪念徽章
日期:2012-02-13 15:12:092012新春纪念徽章
日期:2012-02-13 15:12:092012新春纪念徽章
日期:2012-02-13 15:12:092012新春纪念徽章
日期:2012-02-13 15:12:09版主2段
日期:2012-05-15 15:24:11马上有车
日期:2014-02-19 11:55:14马上有房
日期:2014-02-19 11:55:14
发表于 2009-10-8 22:31 | 显示全部楼层
(6).  DEPENDENT SUBQUERY

子查询中的第一个SELECT,取决于外面的查询

mysql> explain select id from t3 where id in (select id from t3 where id=3952602 )  ;
+----+--------------------+-------+-------+-------------------+---------+---------+-------+------+--------------------------+
| id | select_type        | table | type  | possible_keys     | key     | key_len | ref   | rows | Extra                    |
+----+--------------------+-------+-------+-------------------+---------+---------+-------+------+--------------------------+
|  1 | PRIMARY            | t3    | index | NULL              | PRIMARY | 4       | NULL  | 1000 | Using where; Using index |
|  2 | DEPENDENT SUBQUERY | t3    | const | PRIMARY,idx_t3_id | PRIMARY | 4       | const |    1 | Using index              |
+----+--------------------+-------+-------+-------------------+---------+---------+-------+------+--------------------------+


请教楼主:
您这里的: 取决于外面的查询,是啥意思?
执行计划应该还是先2,再1?

使用道具 举报

回复
论坛徽章:
1
2010新春纪念徽章
日期:2010-03-01 11:20:51
发表于 2009-10-16 12:21 | 显示全部楼层
TO Steven_1981  应该是先2,再1,刚刚理解错了

[ 本帖最后由 storyxsj 于 2009-10-16 14:34 编辑 ]

使用道具 举报

回复
论坛徽章:
24
设计板块每日发贴之星
日期:2009-02-02 01:01:042012新春纪念徽章
日期:2012-01-04 11:53:54ITPUB十周年纪念徽章
日期:2011-11-01 16:24:042010广州亚运会纪念徽章:壁球
日期:2010-11-22 15:43:03ITPUB元老
日期:2010-11-18 13:03:452010新春纪念徽章
日期:2010-03-01 11:04:582010年世界杯参赛球队:瑞士
日期:2010-01-05 13:47:142010新春纪念徽章
日期:2010-01-04 08:33:08生肖徽章2007版:兔
日期:2009-11-01 20:09:03ITPUB8周年纪念徽章
日期:2009-10-09 21:30:11
发表于 2009-11-1 21:14 | 显示全部楼层
不错,学习先

使用道具 举报

回复
论坛徽章:
0
发表于 2009-11-5 14:42 | 显示全部楼层
好东西啊,看看。

使用道具 举报

回复
论坛徽章:
0
发表于 2009-12-23 10:47 | 显示全部楼层
谢谢分享~支持原创~顶

使用道具 举报

回复
论坛徽章:
0
发表于 2010-2-9 15:05 | 显示全部楼层
好好学习,天天向上!

使用道具 举报

回复
招聘 : 数据库管理员
论坛徽章:
4
ITPUB9周年纪念徽章
日期:2010-10-08 09:31:22ITPUB十周年纪念徽章
日期:2011-11-01 16:25:22双黄蛋
日期:2013-04-17 10:57:08三菱
日期:2013-08-13 01:25:14
发表于 2010-2-9 15:40 | 显示全部楼层
这么好的帖子竟然顶的人不多

使用道具 举报

回复
论坛徽章:
9
ITPUB十周年纪念徽章
日期:2011-11-01 16:25:512012新春纪念徽章
日期:2012-01-04 11:56:44ITPUB 11周年纪念徽章
日期:2012-10-09 18:14:482013年新春福章
日期:2013-02-25 14:51:242014年新春福章
日期:2014-02-18 16:44:08马上有对象
日期:2014-02-18 16:44:08
发表于 2011-4-18 11:56 | 显示全部楼层
我搜到这篇帖子,转载次数之高惊人.有个小疏漏.
" 1.id
  我的理解是SQL执行的顺利的标识,SQL从大到小的执行. "

可以查文档,mysql并没有说这个是按sql id从大到小执行的.
---from 文档.
MySQL用一遍扫描多次联接(single-sweep multi-join)的方式解决所有联接。这意味着MySQL从第一个表中读一行,然后找到在第二个表中的一个匹配行,然后在第3个表中等等。

   id
SELECT识别符。这是SELECT的查询序列号。

--------------------------------------------

正确的说法应该是:
mysql执行计划中的ID
ID如果相同,可以认为是一组,从上往下顺序执行
在每组中,其中ID越大,优先级越高,越早执行

楼主估计orale玩多了

使用道具 举报

回复
论坛徽章:
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
发表于 2011-4-18 13:42 | 显示全部楼层
using filesort
我想问一下,从一张大表查询得到20个结果,一张小表只有不到100行,都要order by 排序,那么哪个的开销比较大,或者说哪个更需要在order by 上添加索引?
我一般大表都有在order by 的字段上加上索引避免filesort,但少于100行的都没有添加。

使用道具 举报

回复

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

本版积分规则 发表回复

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