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@]