Как проверить существуют ли записи в БД MySql?

Добрый день. Ежедневно получаю базу данных IP-адресов по URL, вида:

site.ru
xxx.xx.xxx.x
xxx.xx.xxx.x

site2.ru
xxx.xx.xxx.x
xxx.xx.xxx.x

site3.ru
xxx.xx.xxx.x
xxx.xx.xxx.x

и т.п.

Таких сайтов, сейчас около 500, у каждого сайта примерно по 250 адресов. Новые адреса и сайты появляются ежедневно, сейчас эти данные я переношу в базу:
1. Очищаю вчерашнюю версию
2. Заполняю базу заново

Есть ли способ более практичный? Например, проверять какие IP уже есть в базе, и добавлять только недостающие?
Если есть, то как правильно выполнять подобные запросы? т.к. объем около 250к строк.
  • Вопрос задан
  • 83 просмотра
Решения вопроса 1
yellow79
@yellow79
Senior Software Engineer
INSERT IGNORE
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
Если надо не только добавлять, но и удалять:
Сначала пометить все строки как неизменённые
UPDATE `table` SET `updated` = 0;
Затем добавить все записи
INSERT INTO `table` (..., `updated`) 
  VALUES (..., 1) 
  ON DUPLICATE KEY UPDATE `updated` = 1;
В конце удалить строки, оставшиеся неизменёнными
DELETE FROM `table` WHERE `updated` = 0;
Ответ написан
Ваш ответ на вопрос

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

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