MySQL按国家/地区单击日志,最佳方法

时间:2014-09-30 16:31:38

标签: mysql sql

我打算按IP国家/地区记录mysql中的推介点击次数。 假设我的表名为referral_clicks,其列为idreferral_idcountry。 我现在有两种方法:

  1. 创建另一列clicks,为每个国家/ referral_id设置为+1。这意味着我必须首先检查特定referral_id和国家/地区的行是否已存在,如果不存在,则创建它。

  2. 为每个请求插入一个新行。我担心的是,桌子可能会变得凌乱而且太大,因为可能会收到非常多的推荐请求。

  3. 对于类似的东西,现在最好的方法是什么,或者有更好的方法?

1 个答案:

答案 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