Задавайте вопросы, мы ответим
Вы не зашли.
Решил сделать мини тест на производительность ON DUPLICATE KEY:
Имеется тестовая таблица:
Отредактированно simple (07.11.2011 17:31:51)
Неактивен
Код неравнозначен. Во втором примере есть дополнительно WHERE i=100
Неактивен
исправил, в обоих случая идет проверка по уникальному составному индексу
Отредактированно simple (07.11.2011 17:37:22)
Неактивен
В вашем случае в подавляющем большинстве случаев делается UPDATE, поэтому второй механизм работает быстрее (он даже не думает про INSERT).
Неактивен
Вы правы, переделаю скрипт чтобы было по очередное срабатывание update и insert в цикле, такой тест будет честнее
Неактивен
Проверил, да при таком варианте ON DUPLICATE KEY быстрее костыля на 16%, среднее время 1.489 сек и 1.781 сек соответственно.
Делал так:
Отредактированно simple (07.11.2011 19:32:22)
Неактивен
С ROW_COUNT() существует некая проблема когда новое значение равно текущему значению , в таком случае mysql не переписывает его заново и просто ничего не меняет, и в таком случае ROW_COUNT() возвращает "0"
В вашем случае это не грозит, но в других случаях, конструкция IF(!ROW_COUNT()) THEN может не прокатить.
Неактивен