0

構造との相互参照目的で使用されるテーブルを設計しています。

id (BigInt) | cuid (Varchar(255)) | term (Varchar(255))

Web ページで、ユーザーが cuid または用語のいずれかを入力すると、プログラムは対応する ID を調べて、プログラム内で内部的に使用します。データベースには合計 2,669,793 のエントリがあります (したがって、id は 0 ~ 2669792 の範囲になります)。

これはかなり遅いと思います。ルックアップを可能な限り高速にするには、どのようなテクニックを使用すればよいですか? クエリはSELECT id WHERE cuid = ?またはのようになりSELECT id WHERE term = ?ます。

WHERE 句で id 自体を検索していないため、インデックスを作成することでどのようなメリットがあるかわかりません (ただし、id は本質的にインデックスが作成されます)。1 つのテーブルを複数のテーブルに分割し、何らかのマージ操作を行うなどのことを聞いたことがあります。何かご意見は?ありがとう。

4

2 に答える 2

2

id だけでなく、任意のフィールドにインデックスを配置できます。

データが比較的静的な場合、これはおそらく有益です。複数のフィールドでクエリを実行する場合は、複数のフィールドのインデックスにも利点があります。

データが定期的に変更される場合、追加のインデックスには処理コストがかかるため、そのバランスはデータの使用量に依存します

于 2012-09-05T17:50:19.570 に答える
1

id が主キーであると仮定すると、cuidとフィールドの両方にインデックスを提供する必要があります。term

また、最高のパフォーマンスを得るために、これらのインデックスをメモリに保持するのに十分なメモリが割り当てられていることを確認する必要があります。

于 2012-09-05T17:51:00.610 に答える