Очень часто любому разработчику приходится сталкиваться с такой ситуацией:
- Проверить существует ли определенная запись в таблице.
- Если такой записи нет, то добавить ее
- Если запись уже существует, то изменить ее
Начинающий программист решит эту задачу в три запроса, приблизительно так:
1 2 3 4 5 6 7 |
$result=mysql_query("SELECT * FROM `logs` WHERE `ip`='".$ip."'"); if(mysql_num_rows($result)==0){ mysql_query("INSERT INTO `logs` (`ip`, `data`) VALUES ('".$ip."', '".$data."')"); }else{ mysql_query("UPDATE `logs` SET `data`='".$data."' WHERE `ip`='".$ip."'"); } |
Ну а не начинающий знает о конструкции
INSERT ... ON DUPLICATE KEY UPDATE ...
Что дает такая конструкция помимо краткости записи? Она дает выйгрыш в скорости! Тесты под катом.
Читать далее →