0

これは、それぞれ約 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」) を使用することは可能でしょうか? これはパフォーマンスの向上につながる可能性がありますか?

4

1 に答える 1

0

おそらく、フィールドごとに索引付けmany_to_manyする必要がありtoken_idます。ここでは、複合主キーは役に立ちません。

于 2013-02-20T19:05:40.013 に答える