2017-12-30 38 views
0

ギャラリー画像Androidアプリを作成していますが、新しい画像が既にデータベースに存在するかどうかを確認する方法がわかりません。私はそのようなものがあると思っています:イメージがデータベースに既に存在するかどうかを知る方法?

すべての新しいイメージについて、このイメージのmd5を取得します。このmd5はデータベースのイメージのプライマリキーになりますので、後で上記のようにイメージがデータベースにあるかどうかを確認できます。

これは良い選択ですか?イメージが現在データベースに入っているかどうかはどのように知ることができますか?私はバイト画像と比較すると重い作業になると思います、それはありませんか?

答えて

0

チェックサムは発散的ですが区別できないため、プライマリキーを使用しないでください。代わりに、フェイルファストのアプローチのためにそれを使用する:

create table images (
    id  integer primary key, 
    data  blob  , 
    checksum raw(16) 
); 

select * from images where data = ? and id in (
    select id from images where checksum = ? 
); 

しかし、チェックサム衝突の確率はかなり低いので、java内のデータの同一性チェックを行うと、ネストされた声明よりも優れを行う可能性があります。

create index awesome_index_name on images(checksum); 

は、さらにそれがchecksumにインデックスを使用するために役立つかもしれない(データベースに依存して)パフォーマンスを向上させるために、

関連する問題