我正在编写一个图库图片Android应用,但我不知道如何检查我的数据库中是否已存在新图像。我在想这样的事情:
select * from images where id=md5(<new image>);
对于每张新图片,我都会获得此图片的md5。这个md5将是数据库中图像的主键,所以稍后我可以检查图像是否在数据库中,如上所示。
这是一个不错的选择吗?如何知道图像当前是否在数据库中?我认为比较逐字节图像将是一项繁重的任务,它不是吗?
答案 0 :(得分: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);