Php 哪种方式在mysql上存储统计数据更有效?

Php 哪种方式在mysql上存储统计数据更有效?,php,mysql,sql,Php,Mysql,Sql,我为我的网站访问者建立了一个统计数据库,我需要找到存储数据最有效的方法: 我有两个选择 选项1: +-----------------------------+ + date | country + +-----------------------------+ + 2014-03-20 | US + + 2014-03-20 | US + + 2014-03-20 | NL +

我为我的网站访问者建立了一个统计数据库,我需要找到存储数据最有效的方法:

我有两个选择

选项1:

+-----------------------------+
+ date        | country       +
+-----------------------------+
+  2014-03-20 | US            +
+  2014-03-20 | US            +
+  2014-03-20 | NL            +                 
+  2014-03-21 | US            +
+-----------------------------+
然后使用
从表中选择count(*)获取访客数据

选项2:

+-----------------------------+
+ date        | country | visits+
+-----------------------------+
+  2014-03-20 |     US | 2    +
+  2014-03-20 |     NL | 1    +
+  2014-03-21 |     US | 1    +
+-----------------------------+
然后使用
从表中选择sum(访问次数)

你认为哪一个是最好的选择?还是有更好的选择?请记住这一点,以防流量过大


提前非常感谢。

显然,更有效的方法是在计数时使用第二个选项。多行被汇总到一行中,只需花费一个4字节的整数。通常,拥有一个多行相同的表是低效的

因此,出于查询目的,第二种选择会更好


就创建和维护表而言,第一种选择效率更高。插入新记录比更新现有行成本更低。这可能没什么大不了的,但在某些情况下,这可能会产生影响。

第二,由于您的数据库中的条目数量有限。如果您希望获得每次访问国家时的准确时间以获得更好的统计数据,第一个可能是理想的,但第二个更为规范。非常感谢您的回答。假设这是一个健壮的站点(每天500k uniques)。我知道这是一个简单的问题,但我不想达到我希望选择其他选项的程度。考虑统计信息只在用户想检查统计数据时才被读取,但是实际上几乎每秒都插入行。使用摘要方法。就性能而言,它应该是不错的(平均每秒不到10次更新)。