如何知道图像是否已存在于数据库中?

问题描述 投票:0回答:1

我正在写一个画廊形象Android应用程序,但我不知道如何检查我的数据库中是否已存在新图像。我在想这样的事情:

select * from images where id=md5(<new image>);

对于每个新图像,我得到这个图像的md5。这个md5将是数据库中图像的主键,所以稍后我可以检查图像是否在数据库中,就像你上面看到的那样。

这是一个不错的选择吗?如何知道图像当前是否在数据库中?我认为比较逐字节图像将是一项繁重的任务,它不是吗?

java android sql image-processing
1个回答
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中的数据进行身份检查可能比嵌套语句执行得更好。

为了进一步提高性能(并且依赖于数据库),可能有助于在checksum上使用索引:

create index awesome_index_name on images(checksum);
© www.soinside.com 2019 - 2024. All rights reserved.