我正在使用 PHP 和 MYSQL 开发一个 URL 缩短器项目,该项目跟踪每个 url 的访问。我提供了一个主要由以下属性组成的访问表:
time_in_second | country | referrer | os | browser | device | url_id
#####################################################################
1348128639 | US | direct | win | chrome | mobile | 3404
1348128654 | US | google | linux | chrome | desktop| 3404
1348124567 | UK | twitter| mac | mozila | desktop| 3404
1348127653 | IND | direct | win | IE | desktop| 3465
现在我想对该表进行查询。例如,我想用 . 获取 url 的访问数据url_id=3404
。因为我应该提供统计数据并绘制图表,所以对于这个 url,我需要这些数据:
- 此 URL 的每种操作系统的数量,例如 20 个 windows,15 个 linux,...
- 每个所需时间段内的访问次数,例如过去 24 小时内每 10 分钟的访问次数
- 每个国家的访问次数
- ...
如您所见,某些数据(例如国家/地区)可能会接受许多不同的值。
我可以想象的一个好主意是进行查询,该查询输出每列中每个唯一值的数量,例如在上面给出的数据的国家情况下,列上为num_US
,一个为num_UK
,一个为num_IND
。
现在的问题是如何在 sql (MYSQL) 中实现这样一个高性能的查询?
此外,如果您认为这不是对性能的有效查询,您的建议是什么?
任何帮助将不胜感激。
更新:看看这个问题:SQL;只计算每列中指定的值。我认为这个问题与我的类似,但不同之处在于每列可能有多种值(因为可能有很多值country property
),这使得查询更加复杂。