2017-12-30 7 views
0

갤러리 이미지 Android 앱을 쓰고 있지만 데이터베이스에 새 이미지가 이미 있는지 확인하는 방법을 모르겠습니다. 나는 그와 같은 것을 생각하고있다 :이미지가 이미 데이터베이스에 있는지 확인하는 방법?

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

모든 새로운 이미지마다 나는이 이미지를 위해 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에 인덱스를 사용하는 것도 도움이 될 수 있습니다 (데이터베이스에 종속) 성능을 향상하려면

관련 문제