MySQLクエリの結合を最適化する方法についての入力はありますか?たとえば、次のクエリ複数の結合でMySQLクエリを最適化する方法はありますか?
SELECT E.name, A.id1, B.id2, C.id3, D.id4, E.string_comment
FROM E
JOIN A ON E.name = A.name AND E.string_comment = A.string_comment
JOIN B ON E.name = B.name AND E.string_comment = B.string_comment
JOIN C ON E.name = C.name AND E.string_comment = C.string_comment
JOIN D ON E.name = D.name AND E.string_comment = D.string_comment
表A、Bを考慮し、C、Dは、一時テーブルであり、1096行を含み、表E(また、一時テーブル)が426行を含みます。インデックスを作成せずに、MySQL EXPLAINはすべてのテーブルからすべての行を検索していることを示していました。今度は、すべてのテーブルA、B、C、B、Eのname_idxとstring_commentという名前のFULLTEXTインデックスを作成しました。EXPLAINコマンドは、以下のように同じ結果を返しています。 また、任意のコメントどのように私はチューニングこのクエリをすることができます上の
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE A ALL name_idx,string_idx 1096
1 SIMPLE B ALL name_idx,string_idx 1096 Using where
1 SIMPLE C ALL name_idx,string_idx 1096 Using where
1 SIMPLE D ALL name_idx,string_idx 1096 Using where
1 SIMPLE E ALL name_idx,string_idx 426 Using where
(15) 名とstring_commentは、タイプVARCHARとIDXのですが、int型であることに注意してください?
ありがとうございました。
また、ANALYZE TABLEを呼び出すと、クエリのチューニングに役立ちます。 –