SQL腳本書寫注意事項—性能分析(一)

背景描述:

在數據庫服務器上發現有個SQL進程佔用CPU過高,一直處於高位狀態。現需要追蹤找到導致該問題的原因所在。

追蹤過程:略。

原因分析:

在數據中有一個存儲過程,該SP裏面有一個變量被定爲爲 

DECLARE @Name  VARCHAR(50)

但是在一段從表A裏面查詢數據的條件裏面有一行代碼是:WHERE A.Name   = @Name   

        該A表中字段的定義類型是CHAR(50),這樣在執行該查詢的時候,SQLServer隱式轉化charvarchar數據類型(從低優先級向高優 先級轉化),而該表數據量達到了1400萬條數據。這導致了嚴重的性能消耗。

解決方法:

很簡單,在該SP裏面定義該變量的時候,需要和數據庫中的數據類型保持一致,即定義爲 DECLARE @Name  CHAR(50)

經驗總結:

我們在書寫SQL腳本的時候一定要注意一些細節內容,即使是一個變量的定義,數據類型或者長度的定義,都應該時刻注意 對數據庫查詢性能的影響。

        

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章