mysql:9052
From: "藤田" <"藤田" <t-fujita@xxxxxxxxxx>>
Date: Wed, 24 Mar 2004 18:39:47 +0900
Subject: [mysql 09052] JOIN で結合すると遅くなります
初めまして。藤田と申します。 最近AccessからMySQLに乗り換えたばかりです。 現在売上伝票検索システムを作ろうと思っているのですが、検索速度が遅くて困って おります。 現状、下記2つのテーブルがあります。 「denpyou」テーブル: DenpyouNo|T_Code|DenpyouDate| (以下略) ---------+-----+--------- 600053 | 123456|20040323| 600054 | 789012|20040323| 「denpyoumeisai」テーブル: DenpyouNo|KikakuBangou|UriageQty| (以下略) ---------+-----------+--------- 600053 |ABCD-1234 | 1| 600053 |EFGH-5678 | 2| 600054 |ABCD-1234 | 1| (DenpyouNo.T_Code.KikakuBangouにはインデックスを作成してあります。) 「denpyou」テーブルには現在約130万件、「denpyoumeisai」テーブルには約1,600万 件あります。 ここで下記のようなSQLを発行しました。 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 かかります。 これでは実用に耐えられないのですが、もっと早くすることはできますでしょうか? それとも下手にテーブルを正規化しないで DenpyouNo|T_Code|DenpyouDate| KikakuBangou|UriageQty| ・・・ のように構成したほうがよいのでしょうか? select count(*) as cnt from denpyoumeisai where KikakuBangou = 'ABCD-1234' とすると1.90secで終了するのですが・・・ 私の環境は MySQL 4.0.14 OS WindowsXP Pro SP1 CPU Celeron 1.50GHz メモリ256MB です。 御教授お願いいたします。
-> 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@]