Я хочу сравнить две базы данных продуктов на основе названия,
По моим первым данным это около 3 миллионов, из которых я хочу сравнить, а по вторым данным — 10 миллионов, я делаю это потому, что удаляю дубликаты продуктов.
Я попробовал это с помощью программы написания запросов MySQL на PHP, которая проверяет title (name = ‘$ name’), если данные возвращают ноль, поэтому они будут уникальными, но это довольно медленно 2 секунды на результат.
Второй метод, который я использовал, — это сохранение данных в текстовом файле и использование регулярного выражения, но это также замедлит работу.
Как лучше сравнивать большие данные, чтобы узнать уникальные продукты?
Таблица DDL:
CREATE TABLE main ( id int(11) NOT NULL AUTO_INCREMENT,
name text,
image text, price int(11) DEFAULT NULL,
store_link text,
status int(11) NOT NULL,
cat text NOT NULL,
store_single text,
brand text,
imagestatus int(11) DEFAULT NULL,
time text,
PRIMARY KEY (id) )
ENGINE=InnoDB AUTO_INCREMENT=9250887
DEFAULT CHARSET=latin1;
Так как вы должны пройти более 10 миллионов титров в 3 миллиона раз, это займет некоторое время. Мой подход заключается в том, чтобы посмотреть, сможете ли вы получить все заголовки из обоих списков в скрипте php. Тогда сравните их там в памяти. Пусть скрипт создаст операторы удаления в текстовый файл, который вы затем выполните в БД.
Не в вашем вопросе, но, вероятно, у вас следующая проблема: различные варианты написания видят
similar_text()
soundex()
levenshtein()
за некоторую помощь с этим.
На мой взгляд, для этого и создана база данных. Я бы не стал изобретать велосипед в твоих туфлях.
Как только это согласовано, вы должны действительно проверить структуру базы данных и индексирование, чтобы ускорить ваши операции.
Я использую SQLyog сравнить базы данных около 1-2 миллионов данных. Это дает возможность дляОдносторонняя синхронизация«»Двусторонняя синхронизация» а также «Визуально объединить данные«синхронизировать базы данных.
Важной частью является то, что это дает возможность сравнить данные по кускам, и это значение может быть указано нами в письменной форме ограничения порции чтобы избежать потери соединения.