shsweb
@shsweb

Как запретить импорт дублирующихся записей?

Есть пополняемая база объемом в несколько миллионов записей.
В записи 9 полей.
Поля не содержат уникальных данных, но при этом запись должна быть (и есть) уникальной.
Как избежать добавления уже существующих записей (например импортируют несколько раз одно и то же). Пока как вариант добавить еще одно уникальное(unique) поле с MD5 от содержимого остальных полей. Но непонятно как это скажется на скорости и достаточно ли комбинаций MD5 для уникальности.
Что посоветуете?
  • Вопрос задан
  • 2538 просмотров
Пригласить эксперта
Ответы на вопрос 3
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
UNIQUE KEY по кортежу, который должен быть уникальным. Замедлятся вставка/удаление записей, на выборку не повлияет или ускорит.
Ответ написан
VYBGSS
@VYBGSS
Software Developer
Сделать еще одно поле с хэш-функцией от всех других.
Ответ написан
Комментировать
Keksinautin
@Keksinautin
Software Engineer
Т.е. как я понял, сами данные в этих 9 полях записи, уникальными не являются, но их сочетании должно быть уникальным. Тут в голову приходят пара мыслей.
1. Составное уникальный индекс. Но с несколькими миллионами записей это будет тяжеловато, да и если другой пользы от такого индекса нет, то не лучший вариант, пожалуй.
2. Вариант с хешем, сам хеш под индексом. Тут конечно многое зависит от того, какие данные. Я бы постарался даже не md5 заюзать, а crc32 например, но сам индекс сделать составным с каким-то еще данными, чтобы уменьшить вероятность коллизий, но при этом получить выигрыш по скорости, например если объединить интовый айдишник пользователя и интовый crc32.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы