gpt4 book ai didi

php - 在数据库表中存储 View 计数

转载 作者:搜寻专家 更新时间:2023-10-30 20:18:18 25 4
gpt4 key购买 nike

每次访问数据库记录时存储查看计数的合适且最有效的方法是什么?

我的表 ITEMS 包含以下字段:id, item_name

每个项目都有自己的固定链接:http://domain.com/item_name

我希望能够使用此数据并在页面上显示 Views: 2,938。哪种方法最好?


方法A

ITEMS 表中创建一个附加字段 view_count 并更新它以增加观看次数:

view_count = view_count + 1;

方法B

创建一个包含以下字段的新表VIEWS:

id, item_id, timestamp, ip

并在每次浏览页面时向VIEWS 表添加一条新记录。

方法 C

还有其他方法吗?


我已经看到方法 A 在各种 PHP 论坛软件中使用,但是我的大学教师告诉我方法 B 更好,因为 add()update() 需要更少的压力

最佳答案

确实,INSERT 操作通常比 UPDATE 语句消耗更少的资源;但调整良好的 UPDATE 语句不一定是一种压力”。

还有其他注意事项。如果唯一已知和可预见的要求是“总”页数,那么单行将比为每个“查看”事件存储单独的行消耗更少的存储空间。此外,检索观看次数的查询将更加高效。

(现实世界中的“压力”在于存储,不仅仅是磁盘空间,还包括磁带数量和备份所需的时钟时间量、恢复所需的时间等)

如果您需要能够按小时或按天报告观看次数,那么拥有更精细的数据将使您能够做到这一点,这是您无法从总数中获得的。

实际上,您可以两者兼顾。

如果我需要一个“汇总”计数来放置页面,我不想对历史事件记录中的大量行运行查询,只是为了在下一个中得出一个新值 2,939查看页面的时间。每次查看页面时,从单行中检索单个列值对数据库资源的“压力”要小得多,而不是翻阅数千行事件数据以将其聚合成一个计数.

如果我还需要能够按国家或按 IP、按小时、按天、按周或按月报告“观看次数”,我还会存储各个事件行,以便切片和切 block 使用它们分析。

关于php - 在数据库表中存储 View 计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22723828/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com