2009-02-22 32 views

回答

3

根據Microsoft的說法,如果您在sql server 2000/2005/2008中使用索引視圖,那麼性能就會很好。

索引視圖可以通過以下方式提高查詢性能
1.聚合可以預先計算並存儲在索引中,以最大限度地減少查詢執行期間的昂貴計算。
2.可以預先加入表格並存儲結果數據集。
3.可以存儲連接或聚合的組合

但就像表上的索引一樣,視圖上的索引也會遇到修改開銷。因此,如果在運行時增加速度的好處超過了更新視圖索引所需的時間,則只需向視圖添加索引。

下面的鏈接給出了關於這個(關於何時使用什麼)的更多信息。

  1. SQL Server 2000/2005 Indexed View Performance Tuning and Optimization Tips
  2. Improving Performance with SQL Server 2000 Indexed View
  3. See performance gains by using indexed views in SQL
1

在大多數數據庫中,它們在功能上是可以互換的(不考慮物化視圖,這是完全不同的東西)。創建視圖有兩個常見原因。 1.抽象(和列別名)機制,以及2.用於權限和訪問控制。但至於效率,這不是問題。

+1

不正確。當視圖嵌套時,一些數據庫會有性能問題。 – 2009-02-22 21:45:26

+0

你有什麼參考?這似乎不太可能,(儘管這就是爲什麼我說「在大多數數據庫中」)。 – dkretz 2009-02-22 21:58:25

+0

是的。在Oracle嵌套視圖可能表現不佳。在比較擴展查詢和Oracle內部多個視圖定義的相同查詢時,我們自己經歷了這種情況。 – 2009-02-22 22:18:27

0

認爲它是這樣的:

視圖僅僅是住在服務器上,已經由SQL引擎編譯的SELECT語句。

通常視圖用於限制/簡化表格的結果。

問候 ķ

1

這取決於數據庫和視圖的定義上。

一個簡單的視圖,即別名列或執行簡單計算與直接進行查詢沒有區別。

但是,在某些情況下,視圖可能會慢很多。一個例子:在Oracle中,如果你過多地嵌套視圖查詢(例如,一個視圖使用另一個作爲表,使用另一個視圖等),你可以創建糟糕的性能。

一般而言,您需要使用特定的數據庫和疑問進行測試。

相關問題