Очень часто любому разработчику приходится сталкиваться с такой ситуацией:
- Проверить существует ли определенная запись в таблице.
- Если такой записи нет, то добавить ее
- Если запись уже существует, то изменить ее
Начинающий программист решит эту задачу в три запроса, приблизительно так:
$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 ...
Что дает такая конструкция помимо краткости записи? Она дает выйгрыш в скорости! Тесты под катом.
Читать далее →