Chinaunix首页 | 论坛 | 博客
  • 博客访问: 269831
  • 博文数量: 42
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 534
  • 用 户 组: 普通用户
  • 注册时间: 2012-02-26 19:11
文章分类
文章存档

2014年(42)

我的朋友

分类: 数据库开发技术

2014-06-07 14:06:44

[i=s] 本帖最后由 mchdba 于 2011-10-21 10:50 编辑

cdp.listed_cpny_fin_rpt_prd表总记录数:1467246
test.qa_cpny表总记录数:103


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)   
   ;
   
explain  SELECT dat.*
    FROM test.qa_cpny es  
    inner join cdp.listed_cpny_fin_rpt_prd dat
    on (es.excel_id = dat.excel_id)   
   ;
explain结果都是一样的如下:
'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结果,走的都是primary主键索引,可是接下来执行建表语句:
drop table if exists test_cpny.listed_cpny_fin_rpt_prd;
create table test_cpny.listed_cpny_fin_rpt_prd
SELECT dat.*
    FROM test.qa_cpny es
    inner join cdp.listed_cpny_fin_rpt_prd dat
    on (es.excel_id = dat.excel_id)   
   ;
60960 row(s) affected
Records: 60960  Duplicates: 0  Warnings: 0
25.797sec
不加force动作,是25.797sec

drop table if exists test_cpny.listed_cpny_fin_rpt_prd;
create table test_cpny.listed_cpny_fin_rpt_prd
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)   
   ;
60960 row(s) affected
Records: 60960  Duplicates: 0  Warnings: 0
2.765sec
加了force动作,是2.765sec

看来有的时候mysql的explain也不是尽善尽美的啊,大家讨论下这个现象的深层次原因吧!


阅读(2000) | 评论(0) | 转发(0) |
0

上一篇:Iostat 的使用

下一篇:Error

给主人留下些什么吧!~~