每当用户查看文章时,我的网站都会记录对数据库的单击。这张桌子每3天自动清除一次。我们使用这些数据计算出3天内浏览次数最多的页面。
我也想使用这些数据的营销目的,例如,确定哪些用户喜欢哪个部分的网站。
我用php编写了一个脚本,它做了以下工作:
从这些数据中我需要的是最终有一个表来记录上面的数组中的数据,然后当我运行我的查询时,增加它。
不幸的是,这增加了大量的开销。当我有像上面这样的数组时,我必须运行另一个查询来检查数据库中是否已经存在用户和类别的组合,如果已经存在,我必须按照当天的值来增加它。如果鲍比上周看了10页电影,本周看了6页,我需要更新一下表格。如果他以前从来没有看过食物页面,我需要插入。
此查询将返回在过去3天内与站点交互的大约400名用户。这意味着,对于每个i用户,我必须执行1次查询才能获得他们的浏览总数,1次查询以查看他们是否已经浏览过该类别,以及另一项要更新/插入的查询,这取决于他们是否浏览过该类别。你可以看到这是多么的低效。
有人能提出更好的方法吗?我的最终目标是得到一张表格,显示我的用户浏览我的分类的频率,所以我可以说“告诉我所有喜欢吃和喝的用户”等等。
谢谢,马特
发布于 2009-10-22 16:34:53
您可以使用MySQL的INSERT...ON DUPLICATE KEY UPDATE完成更新/插入行为。
您可以使用MySQL的INSERT...SELECT组合选择和插入查询。
如果您发布更多细节(例如,模式),我可以向您展示结合这两种技术的示例查询,尽管MySQL手册对这两个主题都非常深入。
发布于 2009-10-22 16:36:50
如果您使用的是MySQL,并且版本足够高,请查看插入..。关于重复密钥更新。这应该会减少查询。
然后确保您的表是正确的键,这两个查询应该是轻而易举的。
https://stackoverflow.com/questions/1608423
复制相似问题