我很确定对于 10,000 行 MYSQL 来说这不是什么大问题,但是如果我们有数十万甚至数百万行呢?
有人可能会告诉我 cookie 可以解决问题,但由于我是一名新手程序员,我认为使用 cookie 可能会引发更多问题而不是解决问题。
有没有其他选择?还是我应该坚持使用非 IP 敏感计数器?在我的应用程序中,这个计数器只能被商品的卖家查看,而不是用户,其中一些人可能想要玩弄计数器并多次刷新。因此,如果他们没有看到柜台,他们就不会玩弄提神了。
提前致谢,
问候
IP 地址基本上是整数。
将它们存储为整数并在相应列上使用索引——这样查询会非常快。请记住,ipv6 地址对于 32 位整数来说太大了,因此您可能需要考虑使用 varchar(16) 代替并存储您的 ip 地址的二进制表示。
关于你的应用程序的性能,在我看来,为这种统计数据使用某种缓存系统总是好的。例如,仅当某个时间间隔已经过去时才重新生成统计信息。
有很多不同的方法可以解决这个问题。一种方法是记录 item_id、ip_address 和 date,并在所有三列中使用唯一索引。然后INSERT IGNORE
进入表格 -
CREATE TABLE `test`.`view_log` (
`item_id` INTEGER UNSIGNED NOT NULL,
`ip_address` INTEGER UNSIGNED NOT NULL,
`date` DATE NOT NULL,
PRIMARY KEY (`item_id`, `ip_address`, `date`)
);
INSERT IGNORE INTO view_log ($item_id, INET_ATON('$ip_address'), CURRENT_DATE);
注意:这仅适用于 IPv4。要支持 IPv6,您需要使用不同的方法来存储 IP 地址。