效能最佳化探討與分析:
1、首先, SQL SERVER(與所有DBMS一樣)具有特定的硬體建議。在學習和研究SQL SERVER時,使用任何舊的電腦作為伺服器都可以。
但對用於生產的伺服器來說,應該堅持遵循這些硬體建議。
2、一般來說,關鍵的生產DBMS應該運行在自己的專用伺服器上。
3、SQL SERVER是用一系列的預設設定預告配置好的,從這些設定開始通常是很好的。但過一段時間後你可能需要調整記憶體配置、緩衝區大小等。
4、SQL SERVER 一個多使用者多線程的DBMS,換言之,它經常同時執行多個任務。如果這些任務中的某一個執行緩慢,則所有請求都會執行緩慢。
你可以使用WINDOWS Systems Monitor 監視 SQL Server的磁碟以及記憶體使用量、關鍵事件的更改等。
5、總是有不止一種方法編程同一條SELECT 語句。應該實驗連接、並、子查詢等。找出最佳的方法
6、在SQL SERVER處理T-SQL語句時,SQL SERVER試圖最佳化T-SQL,把請求適當地分解為更小的請求,使用索引,等等。理解SQL SERVER所做的工作,
能夠確定批量語句或預存程序的特定部分所花的處理時間,這些對於最佳化效能極為重要。SQL SERVER能報告己提交的SQL 陳述式使用的執行計畫。
這個選項可以Microsoft SQL Server Management Studio (sql server 05+ )和Enterprise Manager(早期版本)中得到
7、一般來說,預存程序執行得比一條一條地執行其中的各條SQL SERVER 語句塊
8、應該總是使用正確的資料類型
9、決不要檢索比需求還要多的資料。換言之,不要用SELECT * (除非你真正需要每個列)
10、必須索引資料庫表以改善資料檢索的效能。確定索引什麼不是一件微不足道的任務,需要分析使用的SELECT 語句以找出重複的WHERE 和ORDER BY
子句。如果一個簡單的WHERE 子句返回結果所花的時間太長,則可以斷定其中使用的列(或幾個列)就是需要索引的對象。
11、你的SELECT 語句中有一系列複雜的OR 條件嗎?通過使用多條SELECT 語句和串連它們的UNION語句,你能看到極大的效能改進
12、索引改善資料檢索的效能,但損害資料插入、刪除和更新的效能。如果你有一些表,它們收集資料且不經常被搜尋,則在有必要之前不要索引它們。
(索引可根據需要添加和刪除)
13、LIKE很慢。一般來說,最好是使用FREETEXT 或CONTAINS進行全文本搜尋
14、資料庫是不斷變化的實體。一組最佳化良好的表一會兒可能就面目全非了。由於表的使用和內容的更改,理解的最佳化和配置也會改變
15、更重要的規則就是,每條規則在某些上都會被打破。
---摘自《SQL SERVER編程必知必會》