私のMySQLDBには、次のように定義されたテーブルがあります。
CREATE TABLE `mytablex_cs` (
`id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT,
`tag` varchar(6) COLLATE utf8_bin NOT NULL DEFAULT '',
`value` text COLLATE utf8_bin NOT NULL,
PRIMARY KEY (`id`),
KEY `kt` (`tag`),
KEY `kv` (`value`(200))
) ENGINE=MyISAM AUTO_INCREMENT=7 DEFAULT CHARSET=utf8 COLLATE=utf8_bin
フィールドにUNIQUE制約(キー)を実装する必要がありvalue
ます。
blob
またはフィールドの値全体に一意のインデックスを定義することはまだ不可能ですが、text
そのような機能を実装するために開かれたチケット(?)があり(このページを参照)、を使用して一意のキーを作成することが提案されています他のフィールドにはすでに実装されているようなハッシュ。
次に、同様のアプローチを使用して、ハッシュを含む別のフィールドをテーブルに追加し、このフィールドに一意のキーを作成します。
このハッシュを作成するための可能な方法を検討しましたが、衝突を回避したいので(数百万のエントリを挿入する必要があります)、クイック検索で得られたとしても、RIPEMD-160アルゴリズムが最適なようです。 SHA256またはSHA1とMD5を使用するいくつかの同様のソリューション。
私は暗号化の知識がまったくないので、このアプローチを選択することの欠点は何ですか?
私が持っているもう1つの質問は、ハッシュを作成するためにMySQLが現在使用しているアルゴリズムはどれかということです。