(それはもちろん、将来的には心配するものだ):
INSERT INTO MyTable (pk) VALUES (MD5('plain-value'));
その後、あなたは知らなくても、ハッシュによって、それを取得したいです何そのハッシュダイジェストがされています。どういうわけかこれは、人々が自分のデータベースとPHPコードのバックアップを盗む場合にはより高いセキュリティを提供することになっている
SELECT * FROM MyTable WHERE pk = MD5('plain-value');
?まあ、そうではありません。元の平易な値とハッシュの方法を知っていれば、値をハッシュしなかったのと同じように簡単にデータを見つけることができます。
私は@scunliffeからのコメントに同意する - 私たちはあなたが解決しようとしている正確に何の問題がわからないが、この方法は、それを解決することはできませんように聞こえます。
これは、主キーとしてMD5ハッシュダイジェストを使用することも非効率的です。あなたはCHAR(32)にそれを格納するか、UNHEXでそれをBINARY(16)に格納する必要があります。それにかかわらず、主キーのデータ型としてINTまたはBIGINTを使用することはできません。キー値はより大きな値であるため、より大きなインデックスを作成します。
また新しい行がクラスタ化インデックス内の任意の場所に挿入します。これは他の人のように単純な自動インクリメント整数を使用した場合と同様に、Bツリーの最後に新しい値を追加するよりも高価です。
存在しない問題を解決しようとしているようです。 2番目のソリューションを忘れる...あなたが解決しようとしている問題は何ですか?例えばコンプリータの手袋を作ろうとしているようですね。http://thedailywtf.com/Articles/The_Complicator_0x27_s_Gloves.aspx – scunliffe