これは、それぞれ約 70000 レコードのテーブルにリンクされた多対多テーブルに関するものです。多対多には、約 530 万のレコードがあります。
両方の「サイド」テーブル (1 つは「トークン」、もう 1 つは「パラ」) への外部キー参照があります。特定のトークンを含むすべてのパラメタを見つけるには、次の行に沿って SELECT ステートメントを実行する必要があります。
SELECT para_id FROM many_to_many WHERE token_id = 3333 GROUP BY para_id;
「token_id」列が複合主キーの「左端」の列であり、para_id に (para_id 外部キーによって使用される) インデックスがあるという事実にもかかわらず、これは非常にゆっくりと動作しているようです。
EXPLAIN を使用しようとしましたが、これは para_id インデックスの使用について言及していないようです。私の質問は、MySQL に para_id インデックスを使用させることは可能ですか? そうでない場合、クエリに「JOIN paras ON paras.ID = many_to_many.para_id」を含めた場合、テーブル「paras」のインデックス (「ID」) を使用することは可能でしょうか? これはパフォーマンスの向上につながる可能性がありますか?