2011-11-16 121 views
1

我已經創建了有關SQL Server 2005數據庫的視圖,並且此視圖基於第三方提供的視圖。我通過JDBC連接在應用程序中顯示它們,它們似乎很慢。我嘗試了另一種方法,並通過使用SQL(select into)命令將它們創建爲表,在這種情況下查看應用程序中的數據的速度非常快。你能告訴我關於最好的方法嗎?視圖很慢

如何提高應用程序性能?

  1. 索引視圖。
  2. 使用SSIS將它們導入我們的數據庫,這也是SQL Server 2008 R2。
  3. 還有什麼?

回答

1

您應該瞭解緩慢的起點。

將數據實現到表中顯然意味着後面的選擇可能會更快,但複製可能會很慢。如果數據正在緩慢變化,那當然是一種可行的設計方法。

索引視圖有限制,所有索引都會影響寫入性能,因爲它們需要在數據更改時更新。

這聽起來像兩臺服務器可以在這裏玩。目前還不清楚您創建的視圖是在您的服務器還是在2005服務器上。如果您在一臺服務器上在另一臺鏈接服務器上的視圖中創建視圖,則可能會導致服務器之間的數據量超過嚴格需要(與所有視圖位於同一臺服務器上並且可以一起優化) 。

2

爲了提高查詢(包括視圖)的性能,我必須找到的最好方法是查看由SSMS生成的生成的查詢計劃。我期待的第一件事是索引或表格掃描。當你看到其中的任何一個時,就很有可能需要索引,而且通常你需要在索引中包含INCLUDE列以便實際使用索引。

索引視圖可以帶來巨大的性能提升。但是,微軟對它們施加了很多限制,實際使用它們往往非常困難。它們也會影響基表上的插入/更新/刪除性能。所以有一個折衷。

我懷疑創建一個單獨的表是一個可行的長期和可擴展的方法,除非計劃要執行這些查詢很少的幾次。複製這些數據的過程可能非常耗費資源。

-1

如何提高應用程序性能?

  1. 索引視圖。
  2. 使用SSIS將它們導入我們的數據庫,這也是SQL Server 2008 R2。
  3. 還有什麼?

沒有提到的另一種選擇是

不要使用意見

我的經驗是非索引意見通常使事情更慢,索引視圖是難以創造因限制。

如果您遇到一些問題,您認爲您需要使用View來嘗試使用CTE或內聯視圖。

+0

嗨,感謝您的輸入。我在第三方數據庫中創建了這些視圖,這些視圖也基於視圖;我使用SSIS將數據導入到我的sql服務器實例 – user362283

+0

當您根據視圖說...您是指您創建的視圖select form other views? –

+0

是每個視圖基於不同的視圖 – user362283