SQl性能優化1


原文發布時間為:2010-11-05 —— 來源於本人的百度文章 [由搬家工具導入]

性能優化,從上面我說的兩點來考慮優化,主要是以Sql為主,平台暫不介紹,我們現在使用的數據庫以SQL Server2005為主。

      一. 從編寫的sql的習慣上來說,之前我們每個人寫sql語句,直接在sql編輯區編寫自己的sql語句,只要能執行成功,就萬事OK了,根本就沒有考慮性能方面問題。因為我們自己在開發的時候(沒測試之前),數據量都是很小的,自己感覺不到。實際到客戶那邊,用一段時間就悲劇了。說到底還是編寫的習慣上面,強烈建議(1)在要調試的sql語句前加入SET STATISTICS IO ON       set statistics time on 語句,這樣用EMS或者SqlServer STUDIO執行查詢時會在執行的結果日志里生成表操作結果做為調試參考 :

1.        * Result : "100 rows fetched (219 ms)

2.        表 'CM_Material'。掃描計數 1,邏輯讀取 386 次,物理讀取 0 次,預讀 0 次,lob 邏輯讀取 0 次,lob 物理讀取 0 次,lob 預讀 0 次。

3.        表 'PT_Csgl'。掃描計數 0,邏輯讀取 2 次,物理讀取 0 次,預讀 0 次,lob 邏輯讀取 0 次,lob 物理讀取 0 次,lob 預讀 0 次。"

    強烈建議(2)運行“執行計划”來檢查sql執行過程是否符合預期,是否用到索引。

    在EMS中點"Explain Query " ;Studio里有“顯示估計的執行計划”按鈕

   如下圖就是一個執行計划的效果圖,執行效果可以清楚看到執行過程



(二)從SQL語句以及設計表的規則上:     

      1.盡量避免在WHERE子句中對字段進行函數或表達式操作,這將導致引擎放棄使用索引而進行全表掃描;

     2.盡量避免使用!=或<>、IS NULL或IS NOT NULL、IN ,NOT IN等這樣的操作符,因為這會使系統無法使用索引,而只能直接搜索表中的數據。

     3.盡量使用數字型字段,我們開發人員大都喜歡把包含數值信息的字段設計為字符型,這會降低查詢和連接的性能,並會增加存儲開銷。這是因為引擎在處理查詢和連接回逐個比較字符串中每一個字符,而對於數字型而言只需要比較一次就夠了。

     4.盡量避免在索引過的字符數據中,使用非打頭字母搜索。這也使得引擎無法利用索引。

     5.數據類型盡量小,這里的盡量小是指在滿足可以預見的未來需求的前提下的。

     6.少用TEXT和IMAGE,二進制字段的讀寫是比較慢的,而且,讀取的方法也不多,大部分情況下最好不用。

     7.自增字段要慎用,不利於數據遷移。

    這里還只是對sql方面的簡單總結,先寫到這吧,呵呵。以后慢慢放些優化的測試實例


注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



性能優化系列七:SQL優化 SQL之性能優化 SQL Server性能優化 SQL Server性能優化 關於SQL性能優化,求助!!! SQL 性能優化 總結 SQL性能優化總結 ORACLE SQL性能優化三 性能優化——SQL語句 sql語句性能優化
 
粤ICP备14056181号  © 2014-2021 ITdaan.com