2010-02-02 53 views
8

我有一張數據表,每週更新一次。然後我有一個查詢來處理這些數據,並且基本上返回一個代碼列表和預訂給這些代碼的小時數。此查詢相當複雜,需要大約5秒鐘才能運行。SQL查看或表

這個數據需要被數據庫中的很多其他查詢使用,所以我想把它放在某個地方,可以被其他查詢輕鬆訪問。在視圖中這樣做似乎是一個好主意,但這意味着每次調用此視圖時,它都會重新運行此查詢,需要5秒鐘,如果一次性有很多調用,則會導致應用程序放慢速度。

所以我在想,如果在星期一導入數據時創建這個視圖作爲表格會更好,因爲這將是唯一一次改變。這是最好的想法,還是我看着這個錯誤的方式?

+0

如果你把它放在一個特定的表中,不要忘記在它使用它的查詢中使用它的文件。 – HLGEM 2010-02-02 14:16:03

回答

2

我處理與我的大部分項目相同的問題。

我們有大量的數據需要根據不同的目的進行重組。我們也受益於用於批量作業和隔夜流程的企業文化,因此用戶對數據的快照性質有良好的教育。大多數用戶的第一件事情是將數據導出到Excel,所以這不是問題。

使用附加表格是一個明智的途徑。

就我個人而言,我在這些表中加下劃線。

_LargeUsefulData 

這使我能夠從在系統的正常操作中發揮積極作用的實體中輕鬆識別便利表。

2

聽起來像是一個合理的方式來解決它。

由於查詢花費很大,因此將結果放在要由其他應用程序使用的「報告」表中聽起來像是一個很好的折衷方案。

只要這些數據的用戶對它按照您描述的方式改變感到滿意,您的方法就沒有問題。

0

無論是在表格中還是在表格視圖中,您仍然在「查看」您的行。

我會首先嚐試優化您的查詢(打你的索引,也許增加/更新/改變你的索引),並通過一個分析器運行它。 Profiler爲您的數據庫的決策計劃提供精彩的見解。

1

如果您的視圖結構允許對其進行索引,則可以創建一個索引視圖(實際上,只要更新了基礎表,這實際上只是數據的副本)。

但是,並非每個查詢都允許通過索引來查看它。

如果您的數據不是第二位的實際數據,則創建表格爲OK

0

是的,它是數據倉庫方向的第一步:) 當然,你應該確保你的新表總是在每週更新一次後生成的。

0

我在我的生產支持中遇到了類似的問題,我需要處理一個大數據庫。基本上,我所做的是,我使用shell腳本創建表。這個shell腳本以這種方式運行:

  1. 如果臨時表存在,則刪除 它。
  2. 通過創建一個表 喜歡創建表x作爲(選擇....)
  3. 使用臨時表和 創建作爲臨時 表運行查詢/過人之處。
  4. 刪除臨時表,如果你不這樣做 需要它了或保持它,如果你 不認爲它會吃你的磁盤空間 。

所有這些都可以使用簡單的shell腳本完成。我發現它非常有用,甚至現在它運行得非常有效。