我想在我的PHP / MySQL应用程序中记录对页面的访问,以实现类似于SO上的视图计数。 我的计划是通过每页上的唯一IP地址来计算请求。大约有 5000 个不同的页面,其中包含一个查看计数。 (我知道计算IP并不准确,但我的目的可以。)
我看到两个选项来组织数据库表:
哪一个更好,性能更好?还是我完全走错了路?
答案 0 :(得分:6)
5000个表意味着5000个不同的查询+ 5000个不同的索引集+ 5000个不同的数据集竞争服务器缓存中的空间。表现很可能很糟糕。
存储完全相同数据结构的多个表几乎总是一个糟糕的设计。如果你担心性能问题,你可以使用MySQL的partitioning support自动将表格分成多个部分,这对最终用户是透明的(例如你的查询)。
答案 1 :(得分:2)
更好的方法是拥有一个存储访问日期时间,页面ID,IP地址等的表。然后每次访问页面时,只需在表格中添加一行即可。这将为您提供原始级别的数据,然后您可以简单地将其聚合以回答您想要的问题。
以这种方式存储数据还可以让您回答更详细的问题,例如在特定日期或某周内制作了多少页面浏览量?您无法使用您在问题中使用的表格结构。