@Valtasaar

Как не использовать запросы к базе в цикле?

Имеется постоянно обновляемый массив с записями. Из этого массива добавляются данные в базу. Нужно чтобы каждая запись в массиве проходила проверку на наличие в базе. Получается, нужно при переборе массива в каждой итерации делать запрос к БД? А по другому можно?
  • Вопрос задан
  • 383 просмотра
Решения вопроса 1
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
UNIQUE + INSERT IGNORE
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
qonand
@qonand
Software Engineer
Если нужно просто добавить много записей: Используйте INSERT IGNORE + массовый инсерт, например:
INSERT IGNORE INTO tablename (field1, field2) VALUES (1,2) (3,4) (5,6)

Если нужно и добавлять и изменять записи: используйте ON DUPLICATE KEY + массовые инсерт, например:
INSERT IGNORE INTO tablename (field1, field2) VALUES (1,2) (3,4) (5,6) ON DUPLICATE KEY UPDATE tablename.field1 = VALUES(field1) ;


ну и не стоит забывать про индексы, а если база особо большая рекомендую и партицирование сделать
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы