Проблема: У меня огромная база данных с пользователями и много дубликатов (25 миллионов записей). Мне нужно найти эти дубликаты и записать их в новую таблицу поиска (я использую SQL)
Так, например:
Ниже приведен список по:
имя , фамилия , доб , идентификатор
User1:
Джон _ Доу _ 1987/02/13 _ 12
Пользователь2:
Джон _ Доу _ 1987/02/13 _32
Так что в моей таблице поиска мне нужно сохранить этих двоих как одного и того же пользователя под центральным идентификатором, который ссылается на их два идентификатора.
Если dob совпадает, а имя и фамилия успешны с нечетким совпадением, предполагается, что это тот же пользователь.
Мое предлагаемое решение:
Поскольку dob должен быть одинаковым, чтобы предположить, что это один и тот же человек, я создаю меньшие индексы из основного db, разбивая его следующим образом: я начинаю с самого низкого года и первого месяца и даю это первому потоку для соответствия , а затем просто напишите в файл .csv, который будет моей таблицей поиска. Поэтому каждый следующий месяц я даю следующую ветку, пока они все не будут заняты. Затем, когда все сделано, просто двигайтесь дальше.
Мои вопросы:
Учитывая ситуацию и мое решение, есть ли где-нибудь в этом решении серьезное узкое место?
Можно ли это как-то оптимизировать для лучшей работы? Например. Вместо того чтобы строить новый индекс, мне лучше искать массив, в котором хранятся данные?
Какой язык программирования подойдет лучше всего? Я думал о Python, но почему-то помню / чувствую, что это не самое быстрое решение? Я тоже рассматриваю C #?
Есть ли что-то еще, что может помочь в этом, кроме многопоточности?
Есть ли дополнительный совет для этого? Что-то, что я упустил из виду или не подумал? Просто лучшее из возможных решений для этого?
Извините, у меня нет фрагментов кода, я хотел разобраться в структуре и логике, прежде чем просто перейти к ней.
Спасибо