FC2ブログ
MySQL でのSELECT高速化についてあれこれ
とりあえず実験したこと思ったことを書き貯めとく

EXPLAN SELECT ~ って感じでクエリの実行プランを表示して色々と試してみた。

a と b というテーブルがあって両方のテーブルに10万件ほどのデータを突っ込む。
このテーブルを INNER JOIN で結合(1対n の形式)し、WHERE 句で b テーブルに
対して条件を指定する。
最後にORDER BY 句を付けると

Using temporary; Using filesort

が発生するっぽい。この状態になると検索結果の取得に時間がかかる。

試しに、WHERE 句の b テーブルに対する条件を取り除くとかなり速くなる。

サブクエリを使い、最初に b テーブルに対する条件を指定し、 a と b を
1対1の形式で結合してみた。
これも同じく

Using temporary; Using filesort

な状態になり検索がかなり遅かった。


もし、何かしらのシステムで検索が遅いなと思ったら、検索を行うためだけの
ルックアップテーブルを用意したほうがいいのかも。

ORDER BY を使う場合はどうしても、遅くなるのは仕方がないとは思うのだけど
INNER JOIN でここまで遅くなるとは思わなかった。DBの設計思想が違うから
仕方なのないことだけど。

参考リンク
http://nippondanji.blogspot.com/2009/03/mysqlexplain.html
http://txqz.net/blog/2006/12/13/0943
スポンサーサイト
TOP
プロフィール

hssamurai

Author:hssamurai
FC2ブログへようこそ!

最新記事
最新コメント

最新トラックバック

月別アーカイブ
カテゴリ