わかりましたインデックス作成をいつ使用する必要があるか、およびそれを使用することの長所と短所についての基本を知っています。
これらは、クエリが次のように見える (唯一の) 2 つの方法です。
SELECT target_id FROM map WHERE table_name = '' AND fingerprint = '' AND source_id = 1;
と
SELECT fingerprint, source_id FROM map WHERE table_name = '' AND target_id = 1;
fields にインデックスを付け、最初のクエリを実行する必要があることはわかってtable_name
いfingerprint
ますsource_id
。またtarget_id
、2番目のクエリで行きます。私はそれを個別に行うことができます。しかし、すべてのフィールドを 1 つとしてインデックス化できれば、複合キーのパフォーマンスが向上すると聞いたことがあります。私の場合は非常に具体的であるため、別の WHERE 句が存在しないため、次のような複合キーを作成することを考えました。
(table_name, fingerprint, source_id)
と
(table_name, target_id)
しかし、table_name
両方の複合インデックスが重複しているため、それが正しい方法かどうかはわかりません。このような重複によるパフォーマンスへの影響はありますか?
私がいくつかのテストを行ったとき、パフォーマンスの向上は得られませんでした.どちらも同じように高速でした.現在、数万のレコードしか持っていません.それが理由かもしれません. ただし、データは数百万のレコードにスケーリングされます。そこで専門家の意見を聞いてみようと思いました。ありがとう。