sql server2005查詢優化建議

查詢優化的目的是提高數據檢索速度,提高數據檢索意味着減少磁盤 IO 讀取或者邏輯內存讀取次數,這需要從兩個方面入手:數據要儘可能的緩存到內存、儘可能的使用索引。內存的問題可以參見   : http://msdn.microsoft.com/zh-cn/library/ms188284.aspx ,本文主要是體現如何使用索引來提高速度。具體方法:

1)     養成良好的編程習慣,比如SARG 優化(這個好像來自於sybase

2)     使用查詢計劃,看某一個查詢是否是使用了索引,是否是使用了臨時表,儘量使用索引,避免臨時表

3)     使用查詢優化顧問,它可以幫助你判斷查詢是否優化,並提示你建立索引

4)     使用SET STATISTICS IO 命令,查看磁盤讀取次數,儘量物理磁盤和邏輯讀取次數少

5)     建立主鍵,主鍵是聚簇索引,數據行基於聚集索引鍵按順序存儲

6)     使用組合索引,避免OR 操作符使用臨時表,select * from table where a=1 or b=2, 可以考慮創建a and b 的組合索引

7)     大數據量表使用已分區表,具體參見:

http://msdn.microsoft.com/zh-cn/library/ms345146 SQL.90 .aspx

8)     使用存儲過程代替複雜sql 語句

9)     存儲過程中使用表變量而不使用臨時表,通常,表變量可提供更有效的查詢 處理: table 變量的行爲類似於局部變量,有明確定義的作用域;在存儲過程中使用 table 變量與使用臨時表相比,減少了存儲過程的重新編譯量;涉及 table 變量的事務只在 table 變量更新期間存在。因此減少了 table 變量對鎖定和記錄資源的需求。但不能顯式創建 table 變量的索引,也不保留 table 變量的任何統計信息。在某些情況下,可以通過改用支持索引和統計信息的臨時表來改善性能。具體參見:

http://msdn.microsoft.com/zh-cn/library/ms175010.aspx

10) 當必須對臨時表顯式地創建索引時,或多個存儲過程或函數必須使用表值時,臨時表很有用。使用大容量日誌模式可以提高臨時表大量插入數據的效率。

 

發佈了27 篇原創文章 · 獲贊 1 · 訪問量 9萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章