[英]Update multiple rows or record in database
如果我有这样的脚本:
$sql = "SELECT * FROM table WHERE Status='0'";
$query = mysql_query($sql);
while ($row = mysql_fetch_array($query))
$id = $row['ID'];
//.........
if($process->send()) { //after sent
mysql_query("UPDATE table
SET Status ='1'
WHERE ID = '$id'");
}
}
因此,当进程完成时它将更新每一行。但是如果我有超过一万条Status='0'
,则更新将变慢。
那么更新记录有更好的方法吗? 我无法使用单个查询更新所有内容,因为我需要知道每个进程是否已完成。
谢谢。
将所有成功的数据添加到数组中,然后同时提交所有这些数据。
if ($process->send()) {
$done[] = $id;
}
稍后:
mysql_query('UPDATE table SET Status=1 WHERE ID IN ('.implode(',', $done).')');
根据您使用的MySQL版本,您可能会考虑设置一个存储过程的函数,以便将此过程偏移到数据库,这样它就不会延迟脚本的运行。
创建过程/创建函数的文档: http : //dev.mysql.com/doc/refman/5.0/en/create-procedure.html
如果UPDATE查询执行缓慢,则可以对MyISAM存储引擎使用LOW_PRIORITY关键字:
例:
UPDATE LOW_PRIORITY SET Status = 1 WHERE id = someid;
您必须为该代码创建存储过程。 它工作得非常快
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.