2012-04-19 2 views
1

インデックスのサイズを最小限に抑えつつ、MySQLの何百万もの電子メールアドレスをインデックスする最良の方法は何ですか?MySQLで電子メールアドレスをインデックス化する最も効率的な方法は何ですか?

インデックスは、電子メールがテーブルに存在するかどうかを素早く確認するために必要です。重複は許可されます。

この場合も、目標はインデックスのサイズを最小限に抑えることです。現在、varcharフィールドで標準インデックスを使用していますが、バイナリハッシュを作成し、最初の数文字をインデックスすることを検討してください。その他のオプションは?

+3

電子メールフィールドに固有の制約。挿入が失敗した場合 - 電子メールが存在する場合。 –

+1

@ N.B .:これは答えが必要です: –

答えて

2

重複して入力したくない場合は、メールにUnique Indexを使用してください。
重複エントリが行われた場合、新しい行は挿入されず、エラーが発生します。

+0

申し訳ありませんが、私は重複が許されることを明確にしておきます。ただし、主な目標はインデックスのサイズを最小限に抑えることです。 –

+0

@Justanotherhacker私は重複した電子メールを許可すればあなたの点についてはっきりしていません。 –

+0

アドレスが既に保存されているかどうかを知ることは貴重です。 –

0

です。両方を試してテストしてください。この方程式には読取り速度以上の速度があることに留意してください。このテーブルが頻繁に更新され、挿入されている場合は、挿入に対する効果も同様に表示されます。

通常のb-treeインデックスでは値がツリーに格納されると思われます(ハッシュインデックスはハッシュを計算してツリーに格納する必要があります)。これは、ハッシュインデックスがより少ないスペースを使用するが、インデックスが更新されるか新しい値が挿入されるようになることを意味します。

ハッシュインデックスに新しい値を挿入する

1のようなものを伴うかもしれない、私の心の中で

は)値のハッシュキーを作成します。

2)インデックスにハッシュを挿入します。

通常のb-treeは、

です。1)indexに値を挿入します。

とにかく2セントの価値があります。

関連する問題