Сравнение списков, как лучше организовать?

Приветствую всех, кто решился сюда заглянуть.

Я новичёк в php и MySQL, поставил себе непосильную задачу и мучаюсь уже несколько дней и разумного способа не нашёл(не разумного, а быстрого)

Стоит передо мной задача сравнить Списки строк.
Есть список в БД - около 20 млн записей.
Есть второй список - в нём около 100тыс записей.

Нужно найти одинаковые записи.

Даже не знаю с какой стороны подойти.
  • Вопрос задан
  • 2342 просмотра
Пригласить эксперта
Ответы на вопрос 3
@angry_bender
PHP, JS
1. Добавляете в таблицу еще одно поле hash (varchar(40)), пишете цикл, который туда положит md5 от ваших строк.
2. На данное поле накладывается индекс.
3. Пишете запрос select * from `mytable` order by `hash` ASC;
4. В цикле по всем записям по сл. алгоритму:
4.а. если флаг пустой, то флаг = hash текущей строки, аккумулятор = строковому полю строки (под строкой понимается очередная запись из БД)
4.б. если флаг не пустой, то если флаг равен hash текущей строки, и аккумулятор = текущему полю строки, - удаляем данную запись
4.в если флаг не пустой и флаг не равен hash текущей строки: флаг = hash текущей строки, аккумулятор = строковому полю строки

Еще пришел в голову вариант: select count(id) as count, hash from `mytable` group by `hash`
и там обработать те хеши, у которых count > 1
Ответ написан
Комментировать
Fesor
@Fesor
Full-stack developer (Symfony, Angular)
циклы, запросы и все такое... Вы бы описали как сравниваете.
Ответ написан
azrail_dev
@azrail_dev
Я бы залил список в базу, сравнил бы средствами SQL, выдал бы результат. Выдать 20 миллионов записей в php, сравнить - не лучший вариант, имхо. А дальше гугли.
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы