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

mysql:8304

From: "Takashi Matsui" <"Takashi Matsui" <k_matsui@xxxxxxxxxx>>
Date: Tue, 21 Oct 2003 00:15:16 +0900
Subject: [mysql 08304] where 節で指定する値で実行が遅くなる

はじめまして松井と申します。
社内業務効率化のため、初めてMySqlを使用して
検索システムを構築しております。
その中でwhereで指定する値によって処理時間に大幅な開き
が生じる現象が発生しました。
原因と対処につきまして、どなたかお分りになりましたら
ご教示願います。

tableは60ほどのフィールドがありまして、その中で
32(デフォルトの最大)個のフィールドにインデックスを
設定しております。以下に示しておりますF1、F2、F3が
そのインデックスとして指定しているフィールドで、
index index1(F1,F3)
index index2(F2,F3)
のように設定しております。なお、F1,F2はTINYINTです。
このtableは最後に示しております通り、24Gbyteほどありまして、
MyISAMによって構成しております。

以下はCSEというツールによるSQLの実行結果です。
まず、F1、F3を条件指定してselectを実行しますと、
***
select ref1,ref2,ref3
from table
where
F1>=1 and F3=15
limit 10

SQLを実行中です...

SQL応答時間 : 0.060000秒

取得データ出力時間 : 0.000000秒
***

瞬時に応答が得られます。
同様にして、F1,F2,F3全てを指定しましても応答は瞬時です。

***
select ref1,ref2,ref3
from table
where
F1>=1 and F2>=1 and F3=15
limit 10

SQLを実行中です...

SQL応答時間 : 0.000000秒

取得データ出力時間 : 0.000000秒
***

ところが、whereで指定する値が、F1、F2のどちらかを"3"以上
で検索しますと極端に遅くなります。

***
select ref1,ref2,ref3
from table
where
F1>=3 and F2>=1 and F3=15
limit 10

SQLを実行中です...

SQL応答時間 : 218.213000秒

取得データ出力時間 : 0.000000秒
***

以下は条件を変えて実行したものです。

***
select ref1,ref2,ref3
from table
where
F1>=3 and F3=15
limit 10

SQLを実行中です...

SQL応答時間 : 0.000000秒

取得データ出力時間 : 0.000000秒

select ref1,ref2,ref3
from table
where
F1>=5 and F3=15
limit 10

SQLを実行中です...

SQL応答時間 : 0.000000秒

取得データ出力時間 : 0.000000秒

select ref1,ref2,ref3
from table
where
F1>=1 and F2>=1 and F3=15
limit 10

SQLを実行中です...

SQL応答時間 : 0.000000秒

取得データ出力時間 : 0.000000秒

select ref1,ref2,ref3
from table
where
F1>=2 and F2>=1 and F3=15
limit 10

SQLを実行中です...

SQL応答時間 : 0.010000秒

取得データ出力時間 : 0.000000秒

10行が選択されました。
***

このように、
・indexとなっているフィールドをwhereで複数指定している かつ
・少なくとも1つのフィールドを"3"以上として指定する
の条件の時に処理が遅くなります。

なお、explainの結果は指定するフィールドが同じであれば、
同じ結果となり、typeはrangeとなり、rowsは同じ値です。

実行環境は、
MySql:4.0.15
WIN2K
tableの規模は
records:49575782
record length:496
data file:24627234448
index file:4586839040
です。

以上よろしくお願いいたします。


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

->    8304 2003-10-21 00:15 ["Takashi Matsui" <k_] where 節で指定する値で実行が遅くなる    
      8305 2003-10-21 09:03 ┗[とみたまさひろ <tomm]