簡體   English   中英

優化視圖

[英]Optimisation of Views

我有一個Windows服務,該服務從視圖中獲取數據,並且為每個視圖定義了一個表,其中填充了數據。

進行這些視圖以使視圖內部的視圖可能更深達三層。

您能否給我一些技巧,以改善大多數外部視圖的性能?

或如何整體提高性能。

謝謝。

編輯 :我也聽說過在視圖內部使用視圖的不好策略,這是真的嗎?

  • 視圖是宏
  • 它們在運行時擴展
  • 它們不會封裝或預先計算查詢**
  • 它們不是優化
  • DRY並不總是適用於數據庫(客戶開發人員提出的視圖情況)

基本上,刪除視圖。 您通常不需要它們。

對於一般的性能調整,這是一個不同且復雜的問題,通常始於不良的設計,不良的代碼和不良做法。

**索引視圖或實例化視圖都可以,但是這些都有使用限制

總體性能不受視圖結構的影響

除了

如果您在內部使用一些聚合處理(或不只是選擇字段),或強制查詢優化器擴展視圖。

關於視圖內部視圖策略的問題-味道很重要,我認為它並不漂亮,但我不能將其命名為策略8-)

關於提高整體性能的幾句話-這是在一條消息中回答的復雜的區域,我認為您應該開始調整數據庫以提高性能,而不必特別關注其他視圖或其他視圖。

我認為這里解釋得很好查看性能問題

SQL Server在運行時解析總查詢,因此查詢計划就像您編寫聯接並選擇所需的列一樣。 如果視圖僅包含適合您的查詢的聯接,則性能應該不比編寫select語句差。 如果視圖具有不適合您正在運行的查詢的聯接,則可能會導致性能問題。

另外,SQL Server在“查看視圖”上花費了一些時間(例如,從系統表中選擇數據),因此視圖的執行時間將比同一查詢長一些,盡管它們的執行計划是相同的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM