xbs
Новичок
UPDATE vs DELETE/INSERT
Сохраняю сессионные переменные в базу, вижу 2 способа, встал вопрос, какой из них быстрее.
1) способ:
- обновить значения переменных: UPDATE table SET varvalue='$value', timestamp=NOW() WHERE varname='$name';
- проверить были ли затронуты строки обновлением: if (mysql_affected_rows() == 0) если нет, то
- вставить значение переменной: INSERT INTO table SET varvalue='$value', varname='$name', timestamp=NOW();
В данном случае timestamp необходимо использовать, чтобы mysql_affected_rows возвращало число затронутых строк больше 0, когда обновляемое varvalue не отличается от уже установленного.
Т.к. переменные в сессии находятся до ее окончания, то в течении жизни сессии INSERT для каждой переменной будет осуществлено только однажды
2) способ:
- удалить строку со старым значением переменной: DELETE FROM table WHERE varname='$name';
- вставить значение переменной: INSERT INTO table SET varvalue='$value', varname='$name';
timestamp, в данном случае, не нужен, но постоянно происходит удаление-вставка.
Грубо говоря, вопрос стоит в том, что быстрее UPDATE или DELETE-INSERT?
Сохраняю сессионные переменные в базу, вижу 2 способа, встал вопрос, какой из них быстрее.
1) способ:
- обновить значения переменных: UPDATE table SET varvalue='$value', timestamp=NOW() WHERE varname='$name';
- проверить были ли затронуты строки обновлением: if (mysql_affected_rows() == 0) если нет, то
- вставить значение переменной: INSERT INTO table SET varvalue='$value', varname='$name', timestamp=NOW();
В данном случае timestamp необходимо использовать, чтобы mysql_affected_rows возвращало число затронутых строк больше 0, когда обновляемое varvalue не отличается от уже установленного.
Т.к. переменные в сессии находятся до ее окончания, то в течении жизни сессии INSERT для каждой переменной будет осуществлено только однажды
2) способ:
- удалить строку со старым значением переменной: DELETE FROM table WHERE varname='$name';
- вставить значение переменной: INSERT INTO table SET varvalue='$value', varname='$name';
timestamp, в данном случае, не нужен, но постоянно происходит удаление-вставка.
Грубо говоря, вопрос стоит в том, что быстрее UPDATE или DELETE-INSERT?