程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> SqlServer數據庫 >> 關於SqlServer >> SQL Server SQL語句調優技巧

SQL Server SQL語句調優技巧

編輯:關於SqlServer

通過例子和解析計劃,本文展示了在Microsoft SQL Server上提高查詢效率有效的一些技巧。在編程中有很多小提示和技巧。了解這些技巧可以擴展你在性能優化上的可用機能。

在這部分裡我們所有的例子都選擇使用Microsoft SHOWPLAN_ALL輸出,因為它更緊湊並且展示典型的信息。(Sybase的查詢計劃基本與此相同,可能包含其它一些信息)大部分的例子都是要麼基於PUBS數據庫,要麼基於標准系統表的。我們在PUBS數據庫中對用到的表進行了很大擴充,對很多表增加了好幾萬行。

子查詢優化

一條好的值得稱贊的規則是盡量用連接代替所有的子查詢。優化器有時可以自動將子查詢“扁平化”,並且用常規或外連接代替。但那樣也不總是有效。明確的連接對選擇表的順序和找到最可能的計劃給出了更多的選項。當你優化一個特殊查詢時,了解一下是否去掉自查詢可產生很大的差異。

示例

下面查詢選擇了pubs數據庫中所有表的名字,以及每個表的聚集索引(如果存在)。如果沒有聚集索引,表名仍然顯示在列表中,在聚集索引列中顯示為虛線。兩個查詢返回同樣的結果集,但第一個使用了一個子查詢,而第二個使用一個外連接時。比較Microsoft SQL Server產生的查詢計劃:

不必更深探索,我們可以看到在CPU和總的實耗時間方面連接更快,僅需要子查詢方案邏輯讀的一半。此外,這兩種情況伴隨著相同的結果集,雖然排序的順序不同,這是因為連接查詢(由於它的GROUP BY子句)有一個隱含的ORDER BY:

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved