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

SQL Server 2000優化SELECT語句方法

編輯:關於SqlServer

本文是SQL Server SQL語句優化系列文章的第一篇。該系列文章描述了在Micosoft’s SQLServer2000關系數據庫管理系統中優化SELECT語句的基本技巧,我們討論的技巧可在Microsoft's SQL Enterprise Manager或 Microsoft SQL Query Analyzer(查詢分析器)提供的Microsoft圖形用戶界面使用。

除調優方法外,我們給你展示了最佳實踐,你可應用到你的SQL語句中以提高性能(所有的例子和語法都已在Microsoft SQL Server 2000中驗證)。

閱讀該系列文章後,你應該對Microsoft 工具包中提供的查詢優化工具和技巧有一個基本的了解,我們將提供包含各種各樣的以提高性能和加速數據讀取操作的查詢技巧。

Microsoft提供了三種調優查詢的主要的方法:

使用SET STATISTICS IO 檢查查詢所產生的讀和寫;

使用SET STATISTICS TIME檢查查詢的運行時間;

使用SET SHOWPLAN 分析查詢的查詢計劃 。

SET STATISTICS IO

命令SET STATISTICS IO ON 強制SQL Server 報告執行事務時I/O的實際活動。它不能與SET NOEXEC ON 選項配對使用,因為它僅僅對監測實際執行命令的I/O活動有意義。一旦這個選項被打開,每個查詢產生包括I/O統計信息的額外輸出。為了關閉這個選項,執行SET STATISTICS IO OFF。

注:這些命令也能在 Sybase Adaptive Server中運行,雖然結果集可能看起來有點不同。

例如,下面是在Northwind 數據庫中對於employees表上的一個行統計的簡單查詢腳本而獲得的I/O統計信息:

SET STATISTICS IO ON
GO
SELECT COUNT(*) FROM employees
GO
SET STATISTICS IO OFF
GO
Results:
---------------
2977
Table ‘Employees’ . Scan count 1,
logical read 53, physical reads 0, readahead reads 0.

這個掃描統計告訴我們掃描執行的數量,邏輯讀顯示的是從緩存中讀出來的頁面的數量,物理讀顯示的是從磁盤中讀的頁面的數量,Read-ahead 讀顯示了放置在緩存中用於將來讀操作的頁面數量。

此外,我們執行一個系統存儲過程獲得表大小的統計信息以供我們分析:

sp_spaceused employees
Results:
name rows reserved data index_size unused
-------------- -------- --------- -------
Employees 2977 2008KB 1504KB 448KB 56KB

通過看這些信息我們能得到些什麼呢?

這個查詢沒有掃描整個表,在表中的數據量超過1.5M字節,而僅僅執行了53個邏輯I/O操作就得到了結果。這表明該查詢發現了一個可用來計算結果的索引,並且掃描索引比掃描所有數據頁花費更少的I/O操作。

索引頁幾乎全部放在數據緩存中,所以物理讀的值是零。這是因為我們之前不久是在employees表上執行了其他查詢,此時表和它的索引已經被緩存。你的查詢開銷可能有不同。

Microsoft報告沒有read-ahead(預讀)活動。在這種情況下,數據和索引頁已經被緩存起來了。當對一個很大的表作表掃描時,read-ahead可能會半路插入進來,並且在你的查詢用到它們之前緩存起所需的頁。當SQL Server確定你的事務是順序讀取數據庫頁並且認為它能預測到你下一步將用到的頁面時,Real-ahead會自動打開。實際上一個獨立的SQL Server連接在你的進程之前已開始運行並為它緩存數據頁。(配置和優化read-ahead 參數已超出這篇文章的討論范圍。

在這個例子中,該查詢已經盡可能有效率地執行了,不必進一步優化。

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