目前在我的电子商务网站中有2个表格如下: 我用2个查询来生成
$query = $this->db->query("SELECT count(*) AS hits, product_id
FROM visitors
GROUP BY product_id");
if ($query->num_rows() > 0) {
foreach ($query->result() as $row){
$hits = $row->hits;
$product_id = $row->product_id;
$data = array(
'product_id' => $product_id ,
'hits' => $hits
);
$this->db->insert('visitor_days', $data);
}
}
问题:
如果10k记录,更新速度很慢。如何改进此查询? 我可以在单个查询中制作吗?
访问者
- ID product_id date
- 534024 69082 2012-09-25
- 534025 69082 2012-09-25
- 534026 69082 2012-09-25
- 534027 69082 2012-09-25
- 534028 53042 2012-09-25
- 534029 53042 2012-09-25
visitor_days
- ID product_id hits
- 534024 69082 4
- 534025 53042 2
答案 0 :(得分:4)
您应该可以使用SELECT子句
在一个INSERT INTO语句中执行此操作INSERT INTO visitor_days
(product_id, hits)
SELECT product_id, COUNT(*)
FROM visitors
GROUP BY product_id
这在你的10k案例中应该非常快,因为你将做一个查询而不是10,001。