インデックスのサイズを最小限に抑えながら、MySQL で数百万のメールアドレスをインデックス化する最良の方法は何ですか?
メールがテーブルに存在するかどうかをすばやく確認するには、インデックスが必要です。重複は許可されます。
ここでも、目標はインデックスのサイズを最小化することです。現在、varchar フィールドで標準インデックスを使用していますが、バイナリ ハッシュを作成し、最初の数文字のインデックスを作成することを検討しています。他のオプションはありますか?
インデックスのサイズを最小限に抑えながら、MySQL で数百万のメールアドレスをインデックス化する最良の方法は何ですか?
メールがテーブルに存在するかどうかをすばやく確認するには、インデックスが必要です。重複は許可されます。
ここでも、目標はインデックスのサイズを最小化することです。現在、varchar フィールドで標準インデックスを使用していますが、バイナリ ハッシュを作成し、最初の数文字のインデックスを作成することを検討しています。他のオプションはありますか?
Unique Index
エントリを重複させたくない場合は、メールに使用します。
重複したエントリが行われると、新しい行は挿入されず、エラーが発生します。
場合によります。両方試してテストしてください。この式には読み取り速度以上のものがあることに注意してください。このテーブルが大幅に更新および挿入された場合、挿入への影響もわかるはずです。
通常の b ツリー インデックスはツリーに値を格納するのに対し、ハッシュ インデックスはハッシュを計算してからツリーに格納する必要があるのではないかと思います (ここでは完全に間違っている可能性があります)。これは、ハッシュ インデックスが使用する領域が少ないことを意味している可能性がありますが、インデックスを更新したり、新しい値を挿入したりするためにより多くの作業が行われます。
私の考えでは、ハッシュインデックスに新しい値を挿入するには、次のようなことが必要になる場合があります
1) 値のハッシュ キーを作成します。
2) ハッシュをインデックスに挿入します。
通常の b ツリーがある場所
1) インデックスに値を挿入します。
とにかく私の2セントの価値。