程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> 其他數據庫知識 >> MSSQL >> 平常搜集整頓SqlServer數據庫優化經歷和留意事項

平常搜集整頓SqlServer數據庫優化經歷和留意事項

編輯:MSSQL

平常搜集整頓SqlServer數據庫優化經歷和留意事項。本站提示廣大學習愛好者:(平常搜集整頓SqlServer數據庫優化經歷和留意事項)文章只能為提供參考,不一定能成為您想要的結果。以下是平常搜集整頓SqlServer數據庫優化經歷和留意事項正文


網上關於SQL優化的教程許多,然則比擬混亂。近日有空整頓了一下,寫出來跟年夜家分享一下,個中有毛病和缺乏的處所,還請年夜家改正彌補。

優化數據庫的留意事項:

1、症結字段樹立索引。

2、應用存儲進程,它使SQL變得加倍靈巧和高效。

3、備份數據庫和消除渣滓數據。

4、SQL語句語法的優化。(可以用Sybase的SQL Expert,惋惜我沒找到unexpired的序列號)

5、清算刪除日記。

SQL語句優化的根本准繩:

1、應用索引來更快地遍歷表。

缺省情形下樹立的索引長短群集索引,但有時它其實不是最好的。在非群集索引下,數據在物理上隨機寄存在數據頁上。公道的索引設計要樹立在對各類查詢的 剖析和猜測上。普通來講:①.有年夜量反復值、且常常有規模查詢(between, >,< ,>=,< =)和order by、group by產生的列,可斟酌樹立群集索引;②.常常同時存取多列,且每列都含有反復值可斟酌樹立組合索引;③.組合索引要盡可能使症結查詢構成索引籠罩,其前導列 必定是應用最頻仍的列。

2、IS NULL 與 IS NOT NULL

不克不及用null作索引,任何包括null值的列都將不會被包括在索引中。即便索引有多列如許的情形下,只需這些列中有一列含有null,該列就會從 索引中消除。也就是說假如某列存在空值,即便對該列建索引也不會進步機能。任安在where子句中應用is null或is not null的語句優化器是不許可應用索引的。

3、IN和EXISTS

EXISTS要遠比IN的效力高。外面關系到full table scan和range scan。簡直將一切的IN操作符子查詢改寫為應用EXISTS的子查詢。

4、在海量查詢時盡可能罕用格局轉換。

5、當在SQL SERVER 2000中,假如存儲進程只要一個參數,而且是OUTPUT類型的,必需在挪用這個存儲進程的時刻給這個參數一個初始的值,不然會湧現挪用毛病。

6、ORDER BY和GROPU BY

應用ORDER BY和GROUP BY短語,任何一種索引都有助於SELECT的機能進步。留意假如索引列外面有NULL值,Optimizer將沒法優化。

7、任何對列的操作都將招致表掃描,它包含數據庫函數、盤算表達式等等,查詢時要盡量將操作移至等號左邊。

8、IN、OR子句常會應用任務表,使索引掉效。假如不發生年夜量反復值,可以斟酌把子句拆開。拆開的子句中應當包括索引。

9、SET SHOWPLAN_ALL ON 檢查履行計劃。DBCC檢討數據庫數據完全性。DBCC(DataBase Consistency Checker)是一組用於驗證SQL Server數據庫完全性的法式。

10、謹嚴應用游標

在某些必需應用游標的場所,可斟酌將相符前提的數據行轉入暫時表中,再對暫時表界說游標停止操作,如許可以使機能獲得顯著進步。

正文:所謂的優化就是WHERE子句應用了索引,弗成優化即產生了表掃描或額定開支。經歷顯示,SQL Server機能的最年夜改良得益於邏輯的數據庫設計、索引設計和查詢設計方面。反過去說,最年夜的機能成績經常是由個中這些雷同方面中的缺乏惹起的。其實 SQL優化的本質就是在成果准確的條件下,用優化器可以辨認的語句,充份應用索引,削減表掃描的I/O次數,盡可能防止表搜刮的產生。

其實SQL的機能優化是一個龐雜的進程,上述這些只是在運用條理的一種表現,深刻研討還會觸及數據庫層的資本設置裝備擺設、收集層的流量掌握和操作體系層的整體設計。

以上內容是關於平常搜集整頓SqlServer數據庫優化經歷和留意事項的全體論述,願望年夜家愛好。

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