程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> 其他數據庫知識 >> MSSQL >> SQL Server數據庫的高機能優化經歷總結

SQL Server數據庫的高機能優化經歷總結

編輯:MSSQL

SQL Server數據庫的高機能優化經歷總結。本站提示廣大學習愛好者:(SQL Server數據庫的高機能優化經歷總結)文章只能為提供參考,不一定能成為您想要的結果。以下是SQL Server數據庫的高機能優化經歷總結正文


本文重要向年夜家引見的是准確優化SQL Server數據庫的經歷總結,個中包含在對其停止優化的現實操作中值得年夜家留意的處所描寫,和對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、任何對列的操作都將招致表掃描,它包含SQL Server數據庫函數、盤算表達式等等,查詢時要盡量將操作移至等號左邊。

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

  9、SET SHOWPLAN_ALL>10、謹嚴應用游標

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

  正文:所謂的優化就是WHERE子句應用了索引,弗成優化即產生了表掃描或額定開支。經歷顯示,SQL Server數據庫機能的最年夜改良得益於邏輯的數據庫設計、索引設計和查詢設計方面。反過去說,最年夜的機能成績經常是由個中這些雷同方面中的缺乏惹起的。

  其實SQL優化的本質就是在成果准確的條件下,用優化器可以辨認的語句,充份應用索引,削減表掃描的I/O次數,盡可能防止表搜刮的產生。其實SQL的機能優化是一個龐雜的進程,上述這些只是在運用條理的一種表現,深刻研討還會觸及SQL Server數據庫層的資本設置裝備擺設、收集層的流量掌握和操作體系層的整體設計。
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved