12
返回列表 发新帖
楼主: mchdba

inner join的时候加上force,从26秒提升到3秒,why ?

[复制链接]
论坛徽章:
4
参与2007年甲骨文全球大会(中国上海)纪念
日期:2007-08-06 15:19:02ITPUB十周年纪念徽章
日期:2011-11-01 16:21:152012新春纪念徽章
日期:2012-01-04 11:51:222013年新春福章
日期:2013-02-25 14:51:24
11#
发表于 2011-10-21 17:06 | 只看该作者
本帖最后由 philip_zhong 于 2011-10-21 17:12 编辑
mchdba 发表于 2011-10-21 17:01
5,再check
mysql> show profile for query 3;
+------------------------------+----------+

没错,看看两次消耗最多的时间区别是不是在sending data上,如果两者不通,估计真实执行的执行计划不同。

使用道具 举报

回复
论坛徽章:
10
2010广州亚运会纪念徽章:击剑
日期:2010-12-16 15:18:59ITPUB十周年纪念徽章
日期:2011-11-01 16:25:222010广州亚运会纪念徽章:帆船
日期:2011-05-12 09:06:552011新春纪念徽章
日期:2011-02-18 11:42:472010广州亚运会纪念徽章:橄榄球
日期:2011-01-09 16:56:412011新春纪念徽章
日期:2011-01-04 10:34:20数据库板块每日发贴之星
日期:2011-01-03 01:01:022010广州亚运会纪念徽章:举重
日期:2010-12-21 20:58:06数据库板块每日发贴之星
日期:2010-12-20 01:01:022012新春纪念徽章
日期:2012-01-04 11:56:01
12#
发表于 2011-10-21 17:13 | 只看该作者
大家继续深入探讨哈

使用道具 举报

回复
论坛徽章:
27
优秀写手
日期:2013-12-18 09:29:09ITPUB季度 技术新星
日期:2012-08-15 14:50:13嫦娥
日期:2013-03-04 09:47:05数据库板块每日发贴之星
日期:2011-09-08 01:01:01数据库板块每日发贴之星
日期:2011-09-11 01:01:01数据库板块每日发贴之星
日期:2011-09-10 01:01:02数据库板块每日发贴之星
日期:2011-09-09 01:01:01ITPUB十周年纪念徽章
日期:2011-11-01 16:26:59ITPUB 11周年纪念徽章
日期:2012-09-28 17:34:422013年新春福章
日期:2013-03-04 09:50:49
13#
 楼主| 发表于 2011-10-21 17:34 | 只看该作者
zty5984 发表于 2011-10-21 17:13
大家继续深入探讨哈

刚才又去做了一次profile check,如下:

mysql> show profile for query 7;
+------------------------------+-----------+
| Status                       | Duration  |
+------------------------------+-----------+
| starting                     |  0.000054 |
| checking permissions         |  0.000006 |
| checking permissions         |  0.000003 |
| checking permissions         |  0.000005 |
| Opening tables               |  0.000154 |
| System lock                  |  0.000018 |
| init                         |  0.000007 |
| checking permissions         |  0.000062 |
| creating table               |  0.002634 |
| After create                 |  0.000059 |
| System lock                  |  0.000010 |
| optimizing                   |  0.000010 |
| statistics                   |  0.000024 |
| preparing                    |  0.000011 |
| executing                    |  0.000004 |
| Sending data                 | 26.819747 |
| Waiting for query cache lock |  0.000015 |
| Sending data                 |  0.002300 |
| end                          |  0.000008 |
| query end                    |  0.000003 |
| closing tables               |  0.000014 |
| freeing items                |  0.000025 |
| logging slow query           |  0.000003 |
| logging slow query           |  0.000003 |
| cleaning up                  |  0.000005 |
+------------------------------+-----------+
25 rows in set (0.01 sec)

mysql>

使用道具 举报

回复
论坛徽章:
10
2010广州亚运会纪念徽章:击剑
日期:2010-12-16 15:18:59ITPUB十周年纪念徽章
日期:2011-11-01 16:25:222010广州亚运会纪念徽章:帆船
日期:2011-05-12 09:06:552011新春纪念徽章
日期:2011-02-18 11:42:472010广州亚运会纪念徽章:橄榄球
日期:2011-01-09 16:56:412011新春纪念徽章
日期:2011-01-04 10:34:20数据库板块每日发贴之星
日期:2011-01-03 01:01:022010广州亚运会纪念徽章:举重
日期:2010-12-21 20:58:06数据库板块每日发贴之星
日期:2010-12-20 01:01:022012新春纪念徽章
日期:2012-01-04 11:56:01
14#
发表于 2011-10-21 17:43 | 只看该作者
为什么有无索引,Sending data          差别那么大?

使用道具 举报

回复
论坛徽章:
52
2015年新春福章
日期:2015-03-06 11:57:312012新春纪念徽章
日期:2012-02-13 15:12:252012新春纪念徽章
日期:2012-02-13 15:12:25生肖徽章2007版:龙
日期:2012-02-07 10:33:22生肖徽章2007版:龙
日期:2012-02-07 10:33:22生肖徽章2007版:龙
日期:2012-02-07 10:33:22生肖徽章2007版:龙
日期:2012-02-07 10:33:22生肖徽章2007版:龙
日期:2012-02-07 10:33:22生肖徽章2007版:龙
日期:2012-02-07 10:32:552012新春纪念徽章
日期:2012-02-07 09:59:35
15#
发表于 2011-10-23 14:52 | 只看该作者
explain结果都是一样的如下:(加了FOURCE)
'1', 'SIMPLE', 'listed_cpny_fin_rpt_prd', 'ALL', 'PRIMARY', NULL, NULL, NULL, '1056426', ''
'1', 'SIMPLE', 'es', 'eq_ref', 'PRIMARY', 'PRIMARY', '4', 'func', '1', 'Using where; Using index'

你别看这些就是对比上次的执行计划:
EXPLAIN SELECT dat.*
    FROM test.qa_cpny es force index(PRIMARY)
    inner join cdp.listed_cpny_fin_rpt_prd dat
    on (es.excel_id = dat.excel_id)  \G

EXPLAIN SELECT dat.*
    FROM test.qa_cpny es
    inner join cdp.listed_cpny_fin_rpt_prd dat
    on (es.excel_id = dat.excel_id)  \G

肯定是2次执行计划 进行INNER JOIN操作的驱动表选择不一样.....另外贴出来下2表的结构SHOW CREATE TABLE tablename\G 模式要看你的索引结构


从你的执行计划猜测,你需要用于连接的字段 并无索引可用...

使用道具 举报

回复

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

本版积分规则 发表回复

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