一
介紹 在數據庫的開發過程中
經常會遇到復雜的業務邏輯和對數據庫的操作
這個時候就會用SP來封裝數據庫操作
如果項目的SP較多
書寫又沒有一定的規范
將會影響以後的系統維護困難和大SP邏輯的難以理解
另外如果數據庫的數據量大或者項目對SP的性能要求很高
就會遇到優化的問題
否則速度有可能很慢
經過親身經驗
一個經過優化過的SP要比一個性能差的SP的效率甚至高幾百倍
二內容
開發人員如果用到其他庫的Table或View務必在當前庫中建立View來實現跨庫操作最好不要直接使用databsedbotable_name因為sp_depends不能顯示出該SP所使用的跨庫table或view不方便校驗
開發人員在提交SP前必須已經使用set showplan on分析過查詢計劃做過自身的查詢優化檢查
高程序運行效率優化應用程序在SP編寫過程中應該注意以下幾點
a) SQL的使用規范
i 盡量避免大事務操作慎用holdlock子句提高系統並發能力
ii 盡量避免反復訪問同一張或幾張表尤其是數據量較大的表可以考慮先根據條件提取數據到臨時表中然後再做連接
iii盡量避免使用游標因為游標的效率較差如果游標操作的數據超過萬行那麼就應該改寫如果使用了游標就要盡量避免在游標循環中再進行表連接的操作
iv 注意where字句寫法必須考慮語句順序應該根據索引順序范圍大小來確定條件子句的前後順序盡可能的讓字段順序與索引順序相一致范圍從大到小
v 不要在where子句中的=左邊進行函數算術運算或其他表達式運算否則系統將可能無法正確使用索引
vi 盡量使用exists代替select count()來判斷是否存在記錄count函數只有在統計表中所有行數時使用而且count()比count(*)更有效率
vii盡量使用>=不要使用>
viii注意一些or子句和union子句之間的替換
ix注意表之間連接的數據類型避免不同類型數據之間的連接
x 注意存儲過程中參數和數據類型的關系
xi注意insertupdate操作的數據量防止與其他應用沖突如果數據量超過個數據頁面(k)那麼系統將會進行鎖升級頁級鎖會升級成表級鎖
[] []
From:http://tw.wingwit.com/Article/program/SQL/201311/16237.html