Вы не говорите масштаб проблемы, поэтому я упомяну кое-что, с чем я недавно помогал другу.
Он работает в страховой компании, которая предоставляет дополнительное управление Dental and Vision для других страховых компаний. Когда они получают нового клиента, они также получают новую базу данных, которая может содержать десятки миллионов записей. Они хотели идентифицировать все возможные ошибки с данными, которые у них уже были в основной базе данных из сотен миллионов записей.
Решение, которое мы придумали, состояло в том, чтобы идентифицировать две различные комбинации значений поля (нормированные различными способами), которые указывали бы на высокую вероятность дублирования. Затем мы создали новую таблицу, содержащую хеш-коды MD5 комбинаций плюс идентификатор основной записи, к которой они применяются. Столбцы MD5 были проиндексированы. Для всех новых записей будут вычислены их комбо-хэши, и если у любого из них будет столкновение с мастером, новая запись будет выгружена в файл исключений, чтобы какой-то человек мог с ним справиться.
Скорость этого удивления, черт побери, из нас (в хорошем смысле слова) и имеет очень приемлемый уровень ложноположительных результатов.