Я использую mysql для обновления поля в таблице при выполнении условия ...
Должен ли я сначала выполнить SELECT, чтобы посмотреть, выполнено ли условие, или я просто пытаюсь использовать UPDATE каждый раз, потому что, если условие не выполняется, ничего не происходит.
Чтобы быть конкретным, вот мой ВЫБОР:
SELECT * FROM forum_subscriptions
WHERE IDTopic=11111 AND IDUser=11111 and status=0
Здесь я проверяю, нахожусь ли я на теме форума 11111 и подписан ли я (ID пользователя 1) на эту тему, и мой статус подписки равен 0 (это означает, что он еще не получил письмо о новом сообщении в теме)
Итак, когда это выполнено, сделайте:
UPDATE forum_subscriptions SET Status=1 where IDTopic=11111 AND IDUser=1
Теперь мне интересно, я всегда делаю выбор здесь, чтобы запросить, подписан ли пользователь на эту тему, и у него есть статус, что он посещал эту тему раньше, поэтому любые новые сообщения не будут вызывать уведомления по электронной почте. Когда он снова посещает страницу, запускается обновление, которое сбрасывает посещение, поэтому любые новые сообщения снова отправляют ему электронное письмо.
Таким образом, выбор делается для каждого пользователя, подписан он или нет, чтобы проверить подписку. Обновление производится только при необходимости.
Лучше просто использовать обновление? Чтобы попытаться обновить на каждой странице, если он не подписан на тему, он не будет ничего обновлять.
Как быстро происходит обновление, которое не дает никаких достоверных данных? Как это сделано внутри, как обновление находит, есть ли запись, выбирает ли и затем обновляет? Если так, то было бы лучше только обновить, потому что я достиг бы того же самого без каких-либо замедлений. Если обновление стоит дороже, чем выбрать, я должен сначала попробовать проверить, а затем обновить при необходимости.
Этот пример - пример из реальной жизни, но логика этого обновления / выбора действительно меня интересует, потому что я нахожу проблемы такого рода чаще.
Thanx
ОБНОВЛЕНИЕ: Спасибо обоим парням, но я не вижу в ваших ссылках, заблокировано ли ОБНОВЛЕНИЕ даже без результатов или нет. Поскольку вы давали разные ответы, я все еще не знаю, что делать.
Таблица подписок действительно не обязательно должна быть myisam, я мог бы изменить ее на InnoDB, потому что мне не нужно ее полнотекстовый. Это хорошее решение, чтобы использовать только обновление и изменить эту маленькую таблицу на Inno? Есть ли у типов таблицы смешивания недостатки?