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

mysql:13896

From: Tetsuro IKEDA <Tetsuro IKEDA <te.ikeda@xxxxxxxxxx>>
Date: Tue, 24 Apr 2007 18:32:01 +0900
Subject: [mysql 13896] Re: TEMPフォルダ内のファイルサイズ

池田です。

Explainによると、

(1) TABLE_Aからインデックスcodeをフルスキャンしつつ200万行超の
  レコードをcolumn_A_9、column_A_6の値による絞込みをしつつ抽出。
(2) 抽出結果に対して、TABLE_Bと結合。
(3) さらにTABLE_Cと結合。
(4) さらにTABLE_Dと結合。

という感じで処理しているようです。

(1)の処理が重いですね。

column_A_6とcolumn_A_9にインデックスは付与されていますか?

MySQL 5.0以上であればindex_merge機能が入っていますので、
index_mergeによって読み取り行数を大幅に減らすことが可能
かもしれません。

MySQL 4.1以下の場合には、マルチカラムインデックスなどで
逃げられないかどうかを検討してみましょう。

とはいえ、、、、

1.5GBのテーブルに30GBの一時テーブル、というのは大きすぎな気がします。
テーブルが壊れていたりはしませんか?
CHECK TABLE、REPAIR TABLEなどで確認してみましょう。

> 
> 池田様
> >ちなみにどんなクエリなんでしょうか?
> >EXPLAIN付きで示していただきたく。
> SQL文をそのままはまずいので、テーブル、カラム名を変えています。
> TABLE_Aが基本となっており、TABLE_Bをの値を参照しています。
> TABLE_DはTABLE_Cを参照して、TABLE_Dを参照しています。
> 上記の内容に加え指定した月から現在までのデータを抽出しています。
> 30万件単位で行っています。
> 
> SELECT
> TABLE_A.id,TABLE_A.code,
> TABLE_A.column_A_1,TABLE_A.column_A_2,TABLE_A.column_A_3,
> TABLE_A.column_A_4,TABLE_A.column_A_5,TABLE_B.column_B_1,
> TABLE_A.column_A_7,TABLE_A.column_A_8,TABLE_A.column_A_9,
> TABLE_D.column_C_10,TABLE_A.column_A_11,TABLE_A.column_A_12,
> TABLE_A.column_A_13,TABLE_A.column_A_14
> FROM
> TABLE_A,TABLE_B,TABLE_C,TABLE_D
> WHERE
> TABLE_A.column_A_6 = TABLE_B.id AND
> TABLE_A.column_A_9 = '0' AND
> TABLE_A.code = TABLE_D.code AND
> TABLE_C.column_C_1 = TABLE_D.id AND
> TABLE_A.column_A_6 > '2006-12-00'
> ORDER BY
> TABLE_A.code
> LIMIT 0,300000
> 
> 
> EXPLAIN文
> |table        |  type   |  possible_keys       |  key          |  key_len  | 
> ref                            |  rows        |  Extra         |
> |-------------------------------------------------------------------------------------------------------------------
> |TABLE_A  |  index  |  code                   |  code        |  20       | 
> NULL                          |  2458926  |  Using where   |
> |TABLE_B  |  eq_ref |  PRIMARY            |  PRIMARY  |  4        | 
> TABLE_A.column_A_6       |  1          |                |
> |TABLE_C  |  ref     |  code,column_C_1  |  code         |  20       | 
> TABLE_A.code              |  1          |                |
> |TABLE_D  |  eq_ref |  PRIMARY            |  PRIMARY  |  4        | 
> TABLE_C.column_C_1       |  1          |                |
> --------------------------------------------------------------------------------------------------------------------
> 以上です。
> 宜しくお願いします。
> 
> 兵頭 
> 

-----------------------------------------
Tetsuro IKEDA, te.ikeda at jpta.scs.co.jp
Kachidoki, Tokyo, Jpan
http://www.scs.co.jp/mysql/
-----------------------------------------


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

     13878 2007-04-23 15:00 [兵頭 <hyodo@xxxxxxxx] TEMPフォルダ内のファイルサイズ      
     13879 2007-04-23 15:19 ┣[YuGo <yu.gotou@xxxxx]                                       
     13880 2007-04-23 15:24 ┃┗[兵頭 <hyodo@xxxxxxxx]                                     
     13881 2007-04-23 17:12 ┃ ┣[YuGo <yu.gotou@xxxxx]                                   
     13882 2007-04-23 17:18 ┃ ┗[YuGo <yu.gotou@xxxxx]                                   
     13884 2007-04-23 21:32 ┃  ┗[兵頭 <hyodo@xxxxxxxx]                                 
     13887 2007-04-24 09:54 ┗[Tetsuro IKEDA <te.ik]                                       
     13888 2007-04-24 11:38  ┗[YuGo <yu.gotou@xxxxx]                                     
     13892 2007-04-24 13:57   ┗[日本情報電信)兵頭 <]                                   
     13893 2007-04-24 14:24    ┣[Tetsuro IKEDA <te.ik]                                 
     13894 2007-04-24 14:56    ┣[YuGo <yu.gotou@xxxxx]                                 
->   13896 2007-04-24 18:32    ┗[Tetsuro IKEDA <te.ik]                                 
     13900 2007-04-25 00:07     ┗[兵頭 <hyodo@xxxxxxxx]