1、開發人員如果用到其他庫的table或view,務必在當前庫中建立view來實現跨庫操作,最好不要直接使用「databse.dbo.table_name」,因為sp_depends不能顯示出該sp所使用的跨庫table或view,不方便校驗。
2、開發人員在提交sp前,必須已經使用set showplan on分析過查詢計畫,做過自身的查詢優化檢查。
3、高程式執行效率,優化應用程式,在sp編寫過程中應該注意以下幾點:
a) sql的使用規範:
i. 盡量避免大事務操作,慎用holdlock子句,提高系統併發能力。
ii. 盡量避免反覆訪問同一張或幾張表,尤其是資料量較大的表,可以考慮先根據條件提取資料到臨時表中,然後再做連線。
iii. 盡量避免使用游標,因為游標的效率較差,如果游標操作的資料超過1萬行,那麼就應該改寫;如果使用了游標,就要盡量避免在游標迴圈中再進行表連線的操作。
iv. 注意where字句寫法,必須考慮語句順序,應該根據索引順序、範圍大小來確定條件子句的前後順序,盡可能的讓字段順序與索引順序相一致,範圍從大到小。
v. 不要在where子句中的「=」左邊進行函式、算術運算或其他表示式運算,否則系統將可能無法正確使用索引。
vi. 盡量使用exists代替select count(1)來判斷是否存在記錄,count函式只有在統計表中所有行數時使用,而且count(1)比count(*)更有效率。
vii. 盡量使用「>=」,不要使用「>」。
viii. 注意一些or子句和union子句之間的替換
ix. 注意表之間連線的資料型別,避免不同型別資料之間的連線。
x. 注意儲存過程中引數和資料型別的關係。
xi. 注意insert、update操作的資料量,防止與其他應用衝突。如果資料量超過200個資料頁面(400k),那麼系統將會進行鎖公升級,頁級鎖會公升級成表級鎖。
儲存過程編寫經驗和優化措施
1 開發人員如果用到其他庫的table或view,務必在當前庫中建立view來實現跨庫操作,最好不要直接使用 databse.dbo.table name 因為sp depends不能顯示出該sp所使用的跨庫table或view,不方便校驗。2 開發人員在提交sp前,必須已經使用set showpl...
儲存過程編寫的乙個經驗
儲存過程最好只有乙個返回值的select語句,讓系統直接判斷出儲存過程返回的字段。前面這個寫法在sql query中沒有任何問題,但在 開發程式中有時就不能返回結果。不良寫法 create procedure p employee id int asif id 1 select name,age f...
mysql過程編寫 mysql儲存過程編寫(一)
首先需要知道mysql儲存過程的作用 1 儲存過程能實現較快的執行速度 2 儲存過程能過減少網路流量 3 儲存過程可被作為一種安全機制來充分利用 儲存過程的格式 create procedure 儲存過程名 過程引數 特性引數 begin endeg delimiter create procedu...