2011-01-21 8 views
1

2つの文字列フィールドのインデックス比較は、インポート中にそれらのフィールドがmd5'dされた場合は速くなりますが、ソース文字列フィールドの代わりに比較で使用されるmd5フィールドはありますか?mysql文字列比較 - md5高速ですか?

答えて

0

ソース文字列がmd5sum(16進数でエンコードした場合は32バイト)より大きい場合、md5sumを使用するとより高速になります。

確率は低いものの、ハッシュcollisionはmd5の合計が等しくなるようにします。つまり、2つのフィールドが同じでないときには、2つのフィールドが一致する可能性があるため、そのことについて2回考えてください。

1

おそらく、文字列が非常に長くても非常に似ていてもかまいません。

さらに重要なことに、文字列が非常に長い場合、MD5列のインデックスはおそらく小さくなります。小さいほどメモリに収まる可能性が高く、ディスクからの読み込みが高速です。したがって、これを実行することによって得られるパフォーマンスの改善があった場合、そのほとんどはおそらくそれに由来します。

つまり、チェックサムを計算する余分なコストと、新しい列が追加されたために値と書き込まれたテーブルのサイズを書き込むことで、読んだときのパフォーマンス上の恩恵を考慮する必要があります。

0

おそらくありません。使用される索引のタイプによって異なる場合があります。インデックス作成時にUSING HASHを指定できます。この場合、MySQLは何らかのハッシング(たぶんMD5も同様)を使用してインデックスを構築しますが、衝突の危険性は避けられます。 2つの値が同じハッシュを持つ場合、ハッシュは両方の行の範囲として機能します。