やきにくとくにきや

WEBサービスとイベントに夢見るエンジニアの技術メモ、チラシの裏。そして焼肉たべたい

【MySQLパフォーマンス実験1】ジョインしてソートする時は一旦IDにするとこんなに早い!

      2013/12/05

二つ以上のテーブルにまたがった検索条件などがあって、リレーションテーブルをジョインして
条件指定したりソートしたりすることは良くあると思う。

データ件数が多いとそのままジョインしたのではクソ重いので、IDだけ一旦取ってくるやり方をすると
各段にパフォーマンスが違うのでメモ。

前提
A~Qの17項目のフィールドがあるテーブルαと
1~5の5項目のフィールドがあるテーブルβとが有り
フィールドAは主キーとする

データ件数は
テーブルαが102,485件
テーブルβが514,455件

■方法1. テーブルαとテーブルβをジョイン&ソート後一回でデータを取得する

結果取得にかかった時間は72.3212秒であった

■方法2. テーブルαとテーブルβをジョイン&ソート後、まずはプライマリーキーだけ取得して、個数分だけ単行セレクトする
① プライマリーキーだけ取得

② ①で取得したプライマリーキーの個数分単行セレクトする

結果取得にかかった時間は0.9342秒であった

比較をわかりやすくするためにインデックス等は考慮しないようにしたが、
それでも相当な差がつくことはわかった。

 - MySQL