目前,当用户点击我网站上的通知时,我会在将其设置为已读之前先检查它是否存在。那是浪费吗?如果我只是进行更新查询会有任何问题吗?
现在:
$check_note = $dbl->run("SELECT 1 FROM `user_notifications` WHERE `id` = ? AND `owner_id` = ?", array((int) $_GET['clear_note'], (int) $_SESSION['user_id']))->fetchOne();
if ($check_note)
{
// they have seen it and when they saw it
$dbl->run("UPDATE `user_notifications` SET `seen` = 1, `seen_date` = ? WHERE `id` = ?", array(core::$date, (int) $_GET['clear_note']));
}
这样做会更好吗?
$dbl->run("UPDATE `user_notifications` SET `seen` = 1, `seen_date` = ? WHERE `id` = ? AND `owner_id` = ?", array(core::$date, (int) $_GET['clear_note'], (int) $_SESSION['user_id']));
答案 0 :(得分:2)
只需进行更新。如果没有任何内容符合WHERE
条件,它将不会做任何事情。数据库必须做同样多的工作来测试UPDATE
期间的条件和SELECT
中的条件,所以你没有保存任何工作,你只是做了额外的,冗余的查询。