2012-01-26 13 views
0

私のウェブサイトには私的な数のファイルがあり、これはPHPにプッシュされています。私はmysqlデータベースを使ってダウンロードを追跡します。現在、私は各ファイルの列を使用し、毎日新しい行を挿入します。これは、多くのファイルがないためです。さまざまなファイルのダウンロード統計をmysqlデータベースに保存

しかし、私はかなり頻繁にファイルの追加と削除を開始する予定で、ファイル数は非常に多くなります。私はそれを見る通り、私は2つの選択肢があります:

最初に、追加したり削除したりするごとに各ファイルの列を追加して削除します。これはすぐに非常に多くの列を持つテーブルにつながります。私は自明だから分かりませんが、それはおそらく非常に悪いことだと思います。列の追加と削除は、非常に高価な操作のように聞こえます。

また、一般的な 'fileID'フィールドを持つ新しいデータベースを作成してから、各ファイルごとに毎日新しい行を追加することもできますが、これは多くの行につながります。また、次の日の追跡を作成するには、多くの行挿入操作が必要になります。

どちらが良いでしょうか?または、私が逃している3番目の解決策がありますか?私はmysql以外の何かを使うべきですか?私は照会できる何かが欲しいので、私はサイト上にグラフとして統計を表示することができます。

お世話になり、読んでいただきありがとうございます。

答えて

1

また、一般的な「fileID」フィールドを持つ新しいデータベースを作成して、各ファイルごとに毎日新しい行を追加することもできますが、これは多くの行につながります。

はい、これはあなたが—を行うために必要なものですが、「新しいテーブル」ではなく、「新しいデータベース」を意味します。

基本的には次のようになりますfileテーブル、お勧めします:

id | name  | created_date | [other fields ...] 
----+-----------+--------------+-------------------- 
    1 | foo.txt | 2012-01-26 | ... 
    2 | bar.txt | 2012-01-27 | ... 

とあなたのdownloads_by_day表がそれを参照します:

id | file_id | `date`  | download_count 
----+---------+------------+---------------- 
    1 |  1 | 2012-01-27 |    17 
    2 |  2 | 2012-01-27 |    23 
    3 |  1 | 2012-01-28 |    6 
    4 |  2 | 2012-01-28 |   195 
+0

ああ、あなたは正しい、私がやりました新しいテーブルを意味します。 –

+0

おっと、入力がこれらを提出するのを知らなかった。とにかく、他の解決策が見つからなければ、私はそれを使用します。ご回答有難うございます。私は設計がいかに効率的であるかについて新しくて自信がない。 –

+1

@JeremyMiller:「他の解決策が見つからない場合は」と言ってはいけません。私を信じて、これはほとんどあなたがやりたいことです。 (私はちょっと答えを広げて、どうやって見えるかを見せてくれました) – ruakh

関連する問題