[前][次][番号順一覧][スレッド一覧]

mysql:9064

From: "UNO Shintaro" <"UNO Shintaro" <uno@xxxxxxxxxx>>
Date: Thu, 25 Mar 2004 01:52:10 +0900
Subject: [mysql 09064] Re: JOIN で結合すると遅くなります

> select count(*) as cnt from denpyou inner join denpyoumeisai
> on denpyou.DenpyouNo = denpyuoumeisai.DenpyouNo
> where T_Code = '123456' and KikakuBangou = 'ABCD-1234';
> 
> すると結果がでるまでに 8 min 4.27 sec
> かかります。
> これでは実用に耐えられないのですが、もっと早くすることはできますでしょうか?


1600万件のテーブルをMySQLで扱ったことがないので確かなことは
言えないんですけど…
explainで表示されたプランを見ると、まずdenpyoumeisaiを検索して、
そこからdenpyoumeisaiの行数分denpyouを読みに行ってるようです。
その順番を逆転させると改善する、かも。
select straight_join ... と書くと、テーブル結合順序をfrom句での
出現順に強制できます。

select straight_join count(*) as cnt from denpyou inner join denpyoumeisai
on denpyou.DenpyouNo = denpyuoumeisai.DenpyouNo
where T_Code = '123456' and KikakuBangou = 'ABCD-1234';

、、どうでしょうか?
うまく行かなかったらごめんなさい。

-- 
UNO Shintaro, 宇野 信太郎
mailto:uno@xxxxxxxxxx
http://www.venus.dti.ne.jp/~uno/


[前][次][番号順一覧][スレッド一覧]

      9052 2004-03-24 18:39 ["藤田" <t-fujita@xxx] JOIN で結合すると遅くなります           
      9054 2004-03-24 18:47 ┣[SUGAWARA Hajime <sug]                                       
      9062 2004-03-25 00:33 ┃┗["藤田" <t-fujita@xxx]                                     
      9066 2004-03-25 08:14 ┃ ┗["藤田" <t-fujita@xxx]                                   
      9067 2004-03-25 08:43 ┃  ┗[seiji takegata <take]                                 
      9058 2004-03-24 20:00 ┣[ML account <ml@xxxxx]                                       
      9061 2004-03-24 20:53 ┣["藤田" <t-fujita@xxx]                                       
      9065 2004-03-25 03:30 ┃┗[ML account <ml@xxxxx]                                     
->    9064 2004-03-25 01:52 ┗["UNO Shintaro" <uno@]