2017-08-30 92 views
0

我正在一個擁有非常大的事務數據表(數億行)的數據倉庫中工作。用戶想要切斷數據的某些常見方式(僅查看某些事務類型,僅查看某些供應商,每次只能查看一個月等),並試圖確定從性能角度。表與視圖的性能SQL Server

數據是靜態的,每月加載一次。所以,我不必處理不斷變化的數據。

我應該創建只包含所需記錄的視圖嗎?或者,我應該創建一個表併爲每個用例加載數據嗎?基本上,我想我的問題是這樣的:如果我有一個大的靜態表,我應該寫一個視圖,只篩選我想要的記錄,然後查詢該視圖?或者,我應該創建一個表,只從我的主表加載我想要的記錄,然後查詢表?

我看到很多關於「視圖vs查詢」的討論,但是我真正要問的是「查詢視圖vs查詢表」。

+0

很難說沒有一些細節。您可以對視圖編制索引,因此這可能對創建需要獲取所需數據的特定視圖非常有用。你可以將數據加載到測試環境中嗎?所有的答案都將在執行計劃中。 – Leonidas199x

+0

該視圖仍然會查詢表格,因此這裏不會有太多差異。但是如果視圖被索引,它可能會有所幫助。可悲的是,這僅僅是一個太寬泛的問題。 –

+0

您是否將Inmon或Kimball方法用於您的數據倉庫體系結構?這是在SQL Server中還是在SSAS中? – Eli

回答

0

我也不得不通過SSIS包將事務表中的8000多萬行轉移到我的數據倉庫當我面臨ASYNC_NETWORK_IO等待類型時,最終我在SSIS中修改了我的查詢以逐批從事務表中獲取記錄並插入到我的數據倉庫中。 你也可以嘗試過濾器條件的視圖,但無論如何它會從基表查找,所以我通過批量去抓取記錄。