現在、テーブル8個に分割したデータを一つにまとめようとしています。
各テーブルは、約10万件のデータが入っています。
このデータをプライマリキーでjoinして取得しようとして、下記のクエリを書きました。
SQL
1SELECT 2 * 3FROM 4 input_irou1 AS ir1 5JOIN input_ir2 AS ir2 ON ir1.count = ir2.count 6JOIN input_ir3 AS ir3 ON ir1.count = ir3.count 7JOIN input_ir4 AS ir4 ON ir1.count = ir4.count 8JOIN input_ir5 AS ir5 ON ir1.count = ir5.count 9JOIN input_ir6 AS ir6 ON ir1.count = ir6.count 10JOIN input_ir7 AS ir7 ON ir1.count = ir7.count 11JOIN input_ir8 AS ir8 ON ir1.count = ir8.count 12ORDER BY 13 ir1.count DESC 14LIMIT 10
上記クエリでjoinできるのはわかるんですが、explainをかけると
いずれかのテーブルで、using temporaryとusing filesortが出現してしまいます。
各テーブルのcountにはprimaryがついています。
using temporary, using filesortを出さずにjoinする方法はないでしょうか。
速度が非常に遅く、困っております。
宜しくお願いいたします。
170128更新
テーブル構造は以下の形です。
(input_irou1の例ですが、2~8もほぼ同様です)
※1全テーブルでインデックス定義はありません
※2鍵マークはprimaryの定義のいみです。
回答1件
あなたの回答
tips
プレビュー