Какие sql команды более эффективны?

Здравствуйте, столкнулся с такой задачей.

Нужно добавить данные в таблиц, если их там нет (в данных имеется уникальный идентификатор).

Как это лучше сделать?

1) запросом SELECT проверить на существование, а потом добавить
2) добавить без проверки.

И нужно удалить данные, если они есть в таблице (в данных имеется уникальный идентификатор).

Как это лучше сделать?

1) запросом SELECT проверить на существование, а потом удалить
2) удалить без проверки.
База данных MySql, таблицы InnoDB
  • Вопрос задан
  • 2725 просмотров
Решения вопроса 2
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
Путь в таблице `table` поле `field1` определено как UNIQUE (или PRIMARY KEY).
Добавление только новых
INSERT IGNORE INTO `table` (`field1`, `field2`, `field3`) 
    VALUES (`valA1`, `valA2`, `valA3`), (`valB1`, `valB2`, `valB3`)

Добавление с заменой
INSERT INTO `table` (`field1`, `field2`, `field3`) 
    VALUES (`valA1`, `valA2`, `valA3`), (`valB1`, `valB2`, `valB3`) 
    ON DUPLICATE KEY UPDATE `field2` = VALUES(`field2`), `field3` = VALUES(`field3`)

Удаление
DELETE FROM `table` WHERE `field1` IN (`valA1`, `valB1`)
Ответ написан
Комментировать
begemot_sun
@begemot_sun
Программист в душе.
А) REPLACE INTO
Б) DELETE FROM
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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