MS SQL Server數據庫查詢優化技巧

      【摘 要】本文主要是對MS SQL Server數據庫查詢優化技巧進行了說明和分析,對索引使用、查詢條件以及數據表的設計等進行了闡述。
中國論文網 http://www.xzbu.com/2/view-3479336.htm
  【關鍵詞】數據庫;查詢;優化技巧
  1、創建索引可以提升查詢效率
  在應用數據庫的過程中是否應用索引查詢是一個具備爭議性的話題,這主要是由於對數據庫某列添加索引之後,在利用該索引對整個數據庫進行查詢的時候就只會在索引範圍以內進行掃描,而不利用該索引對整個數據庫進行查詢時所進行的就是全表的掃描。在這樣一種情況下,從性能的角度來看的話,目標表記錄的總數是固定的,所以在查詢結果比較少的時候索引查詢的效率纔會相對比較高,查詢結果較多的時候索引查詢的效率反而會比較低,正是由於這樣,索引查詢的應用與否纔會成爲一個具備爭議性的問題。但在實際的應用過程中,各類不一樣軟件的應用目的不一,一般來講,記錄數較少的表查詢結果與記錄數的比值偏大,甚至可以出現100%查詢,但記錄數少的表查詢結果與記錄數的比值則偏小,由此認爲,至少應當對一些記錄數比較多的數據庫創建索引查詢來實現查詢效率的提升。
  2、數據表設計對查詢性能的影響分析
  (1)空值比較。在對數據表進行定義的過程中會涉及到數據列的空值問題,這主要是由於在實際的應用過程中無疑會出現容許空值的情況,但在定義數據表時若是容許空值設置的話就會出現is null的查詢條件。一旦is null查詢條件出現後續的查詢過程就是對全表進行的掃描而不是索引掃描,具體來講,int當中採用一些特殊的數字來做爲默認值,而字符串當中則採用空串來做爲默認值。(2)字符類型比較。MS SQL
  Server2005當中共有六類字符串數據類型,包括:varbinary、binary、nvarchar、nchar、varchar、char。在這六個字符串數據類型當中,binary、nchar、char是固定長度的字符串,varbinary、nvarchar、varchar則是可變長度的字符串,在應用的過程中不一樣類型也是能夠互換使用的,所以要注意對其進行區分。
  3、條件表達式性能優缺點分析
  在進行數據查詢的過程中,查詢結果在查詢語句中的表達方式有多種,且不一樣表達方式所獲得的查詢效率有高有底,這也就是說,在進行條件表達式的編寫時也須要根據查詢結果的特色進行選擇和應用,下面主要是結合經常使用的幾種狀況進行說明和分析。(1)!=或<>狀況。咱們在實際的查詢過程中應當儘量的去避免不等條件的應用,這主要是由於一旦在查詢過程中使用不等條件就意味着後續查詢過程只可以經過全面掃描來完成,索引掃描在其中是難以發揮做用的。一般狀況下采用的是大於或小於的表達式來對不等條件進行表示。(2)Like狀況。Like狀況主要是應用於字符串的模糊查詢,其具體的查詢表達形式一樣有多種:like a%、like%a和like a%a ,在這其中,只有likea%既能應用於索引掃描又能應用於全表掃描,like%a和likea%a只能進行全表掃描,正是由於這樣,咱們在進行選擇和使用的時候就儘量的避免後兩種表達方式。可是,在一些目標列中字段過長的時候,檢索方式會選擇爲全文檢索,在這樣一種狀況下則仍是選擇like%a和likea%a更爲合適。(3)in、not in 狀況。在進行查詢語言的設計時,in的用法包括兩種,一種是後接條件集合,一種是後接子查詢,下文中將對這樣兩種狀況分別進行說明和分析。in後接條件集合,若是其數據量不大或者其對應條件無索引時,能夠直接予以使用而不須要對其進行優化,相反,若是數據量較大或者其對應條件有索引時,就建議將全部的條件都集合起來,併爲每個條件都單獨寫sql語句,採用union或者是union all將全部的查詢結果進行鏈接。在這裏進一步說明union和union all之間的區別,union可以對查詢結果進行有效的排序,並去除重複項,而union all則無此功能,在實際的應用過程中就能夠根據須要排序與否來進行選擇和使用。In後接子查詢時,目標表記錄數量若是明顯比子查詢表記錄數少的話就須要採用exists來代替in,必要的時候還能夠在子查詢當中創建索引。但須要注意的是,在一些可以直接使用鏈接查詢方式的語句當中就儘量的不要使用in,這主要是由於in語句至關於hash鏈接,其性能相對而言要低的多。Not in在任何情況下應用都不會使用索引,所以認爲在一些數據量大的數據庫當中儘可能不要使用,而not exists的子查詢則是能夠應用索引掃描的,所以有必要的時候就能夠直接採用not exists加索引來對其進行優化。
  經過上文的說明和分析就能夠看到,在進行數據庫查詢時每每是沒有既定的方式和規則的,須要咱們以查詢效率爲目的來進行創新、設計和嘗試。
  參 考 文 獻
  [1]王珊,薩師炫.數據庫系統概述(第四版)[M].北京:高等教育出版社,2006
  [2]李輝,王至邀.一種多條件分頁查詢優化方法的設計[J].計算機工程.2010(2)sql

相關文章
相關標籤/搜索