の使用:MySQLテーブルの関係と私は2つのテーブルでMySQL DBを持っているMD5ハッシュ
- sample_name(ファイルの店舗名、同じsample_hashのための複数の名前)。
- sample_hash(ファイルのハッシュを格納し、重複するmd5を格納しません)。
これら2つのテーブルを関連付ける
私の最初のオプション(すべてのテーブルがid
int型符号なしNOT NULL AUTO_INCREMENTを持つ)両方のテーブルのMD5列を作成し、それらを関連付けることです。しかし、私はvarchar(32)を複製するので、これは欠点を有するように思われます。これは、何百万ものレコードを持つスペースの無駄です。
私の2番目の選択肢は、まずファイルハッシュを計算し、sample_hashテーブルのmysql_insert_id()
を取得し、sample_nameテーブルに挿入することです。これは、sample_hashテーブルのハッシュが新しい場合に意味があります。したがって、私はmysql_insert_id()
変数を自由に使用できます。
ハッシュがすでにsamples_dbに存在する場合、ハッシュを再度保存しないので、mysql_insert_id()
はありません。
md5がすでに存在する場合に備えて、指定されたmd5のidを検索してsamples_nameテーブルに格納する以外の方法がありますか?もしそうなら、どうしたらいいですか?
ファイル名とハッシュを同じテーブルに保存するようにリファクタリングすることはできますか? –
私はリファクタリングに精通しています。プロセスはどのように機能しますか? – karamazov
どうすればいいのかよく分かりませんが、すべてのフィールドが既に最適化されていますか?私は 'sample_hash'のハッシュのためのユニークなインデックスと、他のテーブルのための単純なインデックスを考えています。フィールドの型はchar(32)でなければなりません。検索を避けるための解決策が見つからない場合、少なくともこの方法では少し早くなります – haltabush