交差テーブルに複合インデックスが必要です:
ALTER TABLE instruments_tools ADD KEY (id_instrument, id_tool);
そのインデックスの列の順序は重要です!
期待しているのは、結合が機器テーブルで始まり、id_instrumentに基づいて複合インデックスで一致するインデックスエントリを検索することです。次に、そのインデックスエントリが見つかると、関連するid_toolが無料で提供されます。したがって、instrument_toolsテーブルを読み取る必要はなく、インデックスエントリを読み取るだけで済みます。これにより、instruments_toolsテーブルのEXPLAINに「Usingindex」コメントが表示されます。
これは役立つはずですが、グループ化および並べ替える列はインデックスを使用できないため、一時テーブルとファイル並べ替えを回避することはできません。
一時テーブルに使用できるメモリのサイズを増やすことで、MySQLが一時テーブルをディスクに書き込まないようにすることができます。
mysql> SET GLOBAL tmp_table_size = 256*1024*1024; -- 256MB
mysql> SET GLOBAL max_heap_table_size = 256*1024*1024; -- 256MB
その図は単なる例です。あなたの場合、一時テーブルのサイズがどれくらいになるかわかりません。