我需要跟踪查询表中每一行的次数。我需要在许多桌子上这样做。

一种想法是“ 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/

10-13 01:21