2017-04-07 6 views
1

私はリンクをクリックした人のログを含むデータベースを持っています。私が保管するものはid,country,referrer-domain,clickedatです。その最後の列はタイムスタンプです。ロギングデータを集約するための最良の方法

現在、多くの行はありませんが、これが離れると数十から数十万行になることがあります。このようなことのためにデータベースを照会するための最良の方法は何ですか:過去の月の日ごとに表示

  • タイムズあなたのリンクを使用
  • トップ20カ国をあなたのリンクを参照
  • トップ20のウェブサイト

COUNT(*)を使用すると、やや遅くなります。私は、更新、挿入、削除に別のクエリを追加するテクニックを見てきましたが、これは特別な集計テーブルに保存することになります。しかし、私はユーザーが例えば2つの特定の日付を選択できるようにしたいので、それがうまくいくかどうかはわかりません。あるいは、私は1日に集計する必要があります。

+0

おそらく、NoSQLのソリューションが役に立つでしょう。 – Jhn

答えて

1

インデックス付きの日付、列を追加すると、その日に日付/時刻の計算が行われないので、通常の集計を使用してクエリを実行できます。適切に書式設定されたクエリで「遅すぎる」までには長い時間がかかります。

この問題が発生する場合は、説明どおりにデータの正規化を検討しますが、時期尚早に最適化しないでください。

+0

これは、当面は実際は素晴らしい解決策です。それは徐々に消え去っており、サービスは会員に提供したいと望む大きなウェブサイトによって拾われていますが、それはちょうどより多くの合計データであり、ユーザーあたりの行数はそれほど多くありません。彼らはすべて相対的な「小さな」ユーザーです。ありがとう! – s1h4d0w

関連する問題