次のようなテーブルを作成します。
+-------------+---------------------+------+-----+-------------------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------------+---------------------+------+-----+-------------------+----------------+
| download_id | bigint(20) unsigned | NO | PRI | NULL | auto_increment |
| created | timestamp | NO | MUL | CURRENT_TIMESTAMP | |
| filename | varchar(32) | YES | MUL | NULL | |
| ip | int(10) unsigned | NO | MUL | NULL | |
+-------------+---------------------+------+-----+-------------------+----------------+
ファイルがダウンロードされるたびに、ファイル名と IP アドレスを適切な列に挿入します (他の 2 つは正しい情報で自動入力されます)。次に、このテーブルに対してクエリを実行して、分析を収集できます。例えば:
2013 年 6 月のダウンロード数を確認するには:
SELECT COUNT(*) AS total_downloads FROM file_download WHERE DATE(created) BETWEEN '2013-06-01' AND '2013-06-30';
ファイル「somefile.zip」が投稿されてから何回ダウンロードされたかを確認したい場合:
SELECT COUNT(*) AS total_downloads FROM file_download WHERE filename = 'somefile.zip';
または、同じ訪問者によってダウンロードされた重複を除いて、「somefile.zip」がダウンロードされた回数を確認したい場合:
SELECT COUNT(*) AS total_downloads FROM file_download WHERE filename = 'somefile.zip' GROUP BY ip;
ダウンロードごとにエントリをログに記録することで、分析できるデータの種類を非常に柔軟に選択できます。各エントリが必要とする容量は最小限であり、ダウンロードごとに 1 つの値をインクリメントするよりも多くのオプションにアクセスできます。