MySQL:在条件更新之前直接更新还是选择?

时间:2012-10-11 23:32:25

标签: database performance updates

只是想知道我们是否需要在大型表中进行条件更新,那么这是最好的方法 -

在更新前直接进行更新或检查现有条目。

function doDirectUpdate()
{
   // UPDATE table WHERE condn
}

OR

function doCheckAndUpdate()
{
   // SELECT COUNT(id) AS exist FROM table WHERE condn
   if(id exists)
   {
      // UPDATE table WHERE condn
   }
   else
   {
      echo 'No matching entry';
   }
}

1 个答案:

答案 0 :(得分:1)

一个人不应该同时执行SELECT,然后执行条件UPDATE,只是为了显示匹配的行数 - 或者缺少匹配的行。您应该执行SELECT的唯一时间是,如果有超过X个匹配行的其他逻辑表明不更新。

UPDATE返回已更新的行数,因此匹配。您应该从UPDATE获取返回值,然后在没有匹配条目的情况下发出警报。

function doUpdateAndAlertIfNotMatched()
{
   numberOfRowsUpdated = UPDATE table WHERE condn;
   if(numberOfRowsUpdated == 0)
   {
      echo 'No matching entry';
   }
}

参考:http://dev.mysql.com/doc/refman/5.0/en/update.html#id844302