2017-04-07 52 views
1

所以我有一個數據庫,其中包含人們點擊鏈接的日誌。我所存儲的是id,country,referrer-domain,clickedat。最後一列是時間戳。聚合日誌記錄數據的最佳方式

目前沒有很多行,但如果這起飛,它可能是數十到數十萬行。什麼是查詢這樣的事情數據庫的最佳方式:

  • 時報每天在過去一個月看
  • 前20名的是使用你的鏈接國家
  • 排名前20的網站引用您的鏈接

使用COUNT(*)最終會太慢。我已經看到了在每次更新中添加另一個查詢的技巧,插入,刪除恰好保存在特定的聚合表中。但我不確定這會起作用,因爲我想讓用戶能夠選擇兩個特定的日期。或者我必須在一天之內彙總。

+0

也許NoSQL解決方案可以爲你工作。 – Jhn

回答

1

如果您添加一個索引日期列,以便您不需要進行日期/時間計算,則只需使用常規聚合就可以查詢它。如果格式正確的查詢需要很長時間纔會「太慢」。

如果它啓動了,請按照描述對數據進行反規範化處理,但不要過早優化它!

+0

這實際上是一個很好的解決方案。它正在慢慢起飛,這個服務正在被一個更大的網站所吸引,該網站希望將它提供給其成員,但這只是更多的總數據,而不是每個用戶的更多行數。他們都是相對「小」用戶。謝謝! – s1h4d0w