我需要跟踪查询表中每一行的次数。我需要在许多桌子上这样做。
一种想法是“ search_count”列
id | other data ... | search_count
1 | ... | 12
2 | ... | 90
有没有比“搜索计数”列更有效的方法?我知道这可以工作,但是会给我带来不好的“代码味道”,因为在每个查询(或触发器?)之后我都必须进行更新。我们将尽可能使用Piwik或Google Analytics(分析),但它们并不完全准确,因为我们不仅拥有连接数据库的Web服务器。
该数据库是MySQL 5.x
谢谢
最佳答案
即时在数据库中执行此操作会生成太多死行...
使用您喜欢的语言使用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
}
}
关于mysql - 代替“计数”行来跟踪表行查询的替代方法,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6351247/