2009-04-12 68 views
0

我需要爲我正在處理的應用程序構建一個報告界面,這需要管理員隨着時間的推移可視化大量的收集數據。在海量數據集中生成MySQL報告的最有效方法

想想類似谷歌Analytics(分析)等一些

最需要可視化數據的坐在其中包含了日期時間,「行動」爲varchar和其他過濾數據基礎表 - 當前表所擁有1.5M行,而且它每天都在增長。

目前我正在做一個簡單的選擇,按日期分組,並且運行得很好,但我想知道是否有更智能的更有效的方式來提取這樣的數據。

乾杯

+0

只有150萬行?不要擔心「優化」,但你應該罰款很長時間。 – kquinn 2009-04-12 23:42:09

回答

2

1)兩層 - 原始數據和彙總數據。對於原始數據,索引可能沒有幫助。您正在進行聚合,在大多數情況下需要進行全表掃描。如果沒有,重新組織,它會更快。

2)找出您的聚合,自動生成它們,並從聚合數據運行報告。索引這些彙總表!

3)避免連接。彙總,實現分組的結果,然後加入彙總結果。

4)分區。將數據保留一天(或任何有意義的粒度)與另一天的數據分開。根據需要製作自動化的表格創建腳本(根據您的觀點,成長或功能繁多 - 數據庫爲您提供稱爲「分區」的內容,以更爲理智的方式執行此操作)。

5)閱讀上的 「數據倉庫」 http://en.wikipedia.org/wiki/Data_warehouse

1

你可以開始了做幾件事情:

  1. 請確保您添加的所有過濾器的索引,使他們不會做任何表掃描。

  2. 檢查使用查詢計劃分析器,以確保沒有需要優化的地方。

  3. 由於您的表格中包含日期時間戳記,所以分區將在未來一定幫助您。

祝你好運。

0

您可以期待一些常見查詢,與可生成的唯一過濾器組合的數量相比,這可能是一個很小的數字。您可以使用它將數據「壓縮」到隨播表中,並在晚上運行此收集過程。