我需要爲我正在處理的應用程序構建一個報告界面,這需要管理員隨着時間的推移可視化大量的收集數據。在海量數據集中生成MySQL報告的最有效方法
想想類似谷歌Analytics(分析)等一些
最需要可視化數據的坐在其中包含了日期時間,「行動」爲varchar和其他過濾數據基礎表 - 當前表所擁有1.5M行,而且它每天都在增長。
目前我正在做一個簡單的選擇,按日期分組,並且運行得很好,但我想知道是否有更智能的更有效的方式來提取這樣的數據。
乾杯
我需要爲我正在處理的應用程序構建一個報告界面,這需要管理員隨着時間的推移可視化大量的收集數據。在海量數據集中生成MySQL報告的最有效方法
想想類似谷歌Analytics(分析)等一些
最需要可視化數據的坐在其中包含了日期時間,「行動」爲varchar和其他過濾數據基礎表 - 當前表所擁有1.5M行,而且它每天都在增長。
目前我正在做一個簡單的選擇,按日期分組,並且運行得很好,但我想知道是否有更智能的更有效的方式來提取這樣的數據。
乾杯
1)兩層 - 原始數據和彙總數據。對於原始數據,索引可能沒有幫助。您正在進行聚合,在大多數情況下需要進行全表掃描。如果沒有,重新組織,它會更快。
2)找出您的聚合,自動生成它們,並從聚合數據運行報告。索引這些彙總表!
3)避免連接。彙總,實現分組的結果,然後加入彙總結果。
4)分區。將數據保留一天(或任何有意義的粒度)與另一天的數據分開。根據需要製作自動化的表格創建腳本(根據您的觀點,成長或功能繁多 - 數據庫爲您提供稱爲「分區」的內容,以更爲理智的方式執行此操作)。
5)閱讀上的 「數據倉庫」 http://en.wikipedia.org/wiki/Data_warehouse
你可以開始了做幾件事情:
請確保您添加的所有過濾器的索引,使他們不會做任何表掃描。
檢查使用查詢計劃分析器,以確保沒有需要優化的地方。
由於您的表格中包含日期時間戳記,所以分區將在未來一定幫助您。
祝你好運。
您可以期待一些常見查詢,與可生成的唯一過濾器組合的數量相比,這可能是一個很小的數字。您可以使用它將數據「壓縮」到隨播表中,並在晚上運行此收集過程。
只有150萬行?不要擔心「優化」,但你應該罰款很長時間。 – kquinn 2009-04-12 23:42:09