A是明细表B是汇总表找出A表总的数据计算后写入B表。用户uid,所谓量表之间的唯一字段。汇总语句如下:$query = $this->db->query("SELECT uid,money FROM A $where order by id LIMIT $start_limit, $perpage");
while($row = $db->fetch_array($query)) {
$query_r = $db->query("SELECT * FROM B WHERE uid='{$row['uid']}'");
$row_r = $db->fetch_array($query_r);
$r_id = $row_r['uid'];
if($r_id>0){
$db->query("update money=money+{$row['money']} where uid=$r_id" );
}else{
$db->query("insert B (`uid`,`money`)values($r_id,$row['money');
}
}
我是分页汇总。。每页20个。。汇总1万条数据。需要花半个多小时。太慢了。。大家有更好的解决方法吗?小弟再是感谢了
while($row = $db->fetch_array($query)) {
$query_r = $db->query("SELECT * FROM B WHERE uid='{$row['uid']}'");
$row_r = $db->fetch_array($query_r);
$r_id = $row_r['uid'];
if($r_id>0){
$db->query("update money=money+{$row['money']} where uid=$r_id" );
}else{
$db->query("insert B (`uid`,`money`)values($r_id,$row['money');
}
}
我是分页汇总。。每页20个。。汇总1万条数据。需要花半个多小时。太慢了。。大家有更好的解决方法吗?小弟再是感谢了
你只需要计算出增量,最后一次性写入到B中,分页成20个,db操作次数太多了
update的时候,可以把N句写在一起,注意别超出SQL的最长限制就行了
这样吗。还是怎么写?
INSERT INTO `B`
(`uid`,`money`)
SELECT `uid`,`money`
FROM `A`
LIMIT 1
ON DUPLICATE KEY UPDATE
`B`.`money`=`B`.`money`+`A`.`money`;