2013-06-21 58 views
3

我有一個非常通用的數據庫問題。我在我的數據庫中創建了一個表,用於跟蹤整個網站中的點擊次數。我的表結構如下:數據庫設計問題由於量

  • (PK) - ID,
  • (FK) - PAGEID,
  • (FK) - 的ContactID,
  • 日期

這個問題我我認爲,如果用戶設置較大,並且有大量點擊數據,則此表中的行數在20-30萬個範圍內。是否有另外一種方式可以組織這些數據,以便更輕鬆地進行報告?

SELECT P.TITLE, COUNT(DISTINCT(C.ID)) 
FROM PAGES P 
INNER JOIN CLICKS C ON C.PAGEID = P.PAGEID 
WHERE C.DATE >= 5/1/2013 AND C.DATE < 6/1/2013 AND C.PAGEID = XYZ 
+2

你爲什麼不保持這種模式,並運行每日一次,它將在彙總結果到一個單獨的表彙總查詢?較小的聚合表應該更快地進行查詢。 – Suman

+0

你有日期索引嗎? –

+0

定期存檔cron作業(也可能是彙總?)數據。 – Kevin

回答

2

這就是所謂的三維設計。

您可以使用像Pentaho的聚合設計的工具,以找到合適的聚合(如點擊次數由客戶通過一個月)。

然後使用OLAP工具,像蒙德里安+齋宮,可動態重寫查詢,使用總量時是有利的。

您應該使用日期維度表的整數智能鑰匙&匕首; (如20130621)。這可以很容易地按日期劃分訪問事實。

Pentaho的數據集成可以很容易進行分區表。

&dagger;這是唯一一次在尺寸設計中使用智能鑰匙的時間。