我需要跟踪查询表中每一行的次数。我需要在很多桌子上这样做。
一个想法是“search_count”列
id | other data ... | search_count
1 | ... | 12
2 | ... | 90
有没有一种比“搜索计数”列更有效的方法呢?我知道这会起作用,但它给我一个糟糕的“代码味道”,因为我必须在每次查询后做一次更新(或者一个触发器?)。我们会尽可能多地使用Piwik或Google Analytics,但它们并不完全准确,因为我们不仅仅是连接数据库的Web服务器。
该数据库是MySQL 5.x
由于
答案 0 :(得分:1)
动态地在DB中执行此操作会产生太多死行......
使用您最喜爱的语言memcache->increment
跟踪此事。它是原子的。并使用cron每天或每小时存储结果。
要计算的伪代码:
$ns = $memcache->get('count_ns');
$memcache->increment("count-$ns-$table-$id");
关于cron:
$ns = $memcache->get('count_ns');
sleep(1); // allow processes to finish
$memcache->increment('count_ns');
while ($row = $rows->next()) {
if ($count = $memcache->get("count-$ns-$table-$id") {
// increment count
}
}