我打算按IP国家/地区记录mysql中的推介点击次数。
假设我的表名为referral_clicks
,其列为id
,referral_id
,country
。
我现在有两种方法:
创建另一列clicks
,为每个国家/ referral_id设置为+1。这意味着我必须首先检查特定referral_id和国家/地区的行是否已存在,如果不存在,则创建它。
为每个请求插入一个新行。我担心的是,桌子可能会变得凌乱而且太大,因为可能会收到非常多的推荐请求。
对于类似的东西,现在最好的方法是什么,或者有更好的方法?
答案 0 :(得分:1)
使用INSERT ... ON DUPLICATE KEY UPDATE
。
我建议你创建一个包含以下列的表。
id (autoincrement)
referral_id
country
clickdate
clicks
我建议您创建(referral_id,country,clickdate)
的唯一索引。
然后,我建议您每次要记录点击时都使用以下SQL:
INSERT INTO referral_clicks (referral_id, country, clickdate, clicks)
VALUES ('whatever', 'whatcountry', CURDATE(), 1)
ON DUPLICATE KEY UPDATE clicks=click+1
对于每个日期,这将为每个国家/地区的每个引荐ID开始一个新行。如果该行已存在,则会为您增加clicks
。