Задача состоит в том, чтобы найти разницу между двумя списками элементов.
Первый список находится в таблице MySQL в поле indexed
integer
. Таким образом, мы можем легко получить это с SELECT myfield FROM mytable WHERE otherfield = mycondition
. Давайте представим, что результат запроса составляет около 5000 строк.
Второй список находится в моем скрипте PHP, я только что загрузил его из Интернета. Пусть это будет 2000 строк .
Большинство элементов списка дублированы и не должны быть вставлены в базу данных.
Способ 1: выбрать 5000 строк из MySQL, сравните его с вторым списком , используя функцию array_diff
PHP, и выполните массовый запрос INSERT (field1,field2,field3) VALUES (1,2,3),(2,3,4),(3,4,5)....;
. Таким образом, у нас меньше MySQL запросов, но они достаточно тяжелые.
Способ 2: сделать foreach l oop для моего второго списка и проверить, существует ли каждый ключ в MySQL и вставьте если нет.
Вопрос в том, какой способ является более правильным и дешевым для сервера? Я спрашиваю, потому что процесс сравнения начинается каждые 30 минут.