儲存過程編寫經驗優化

2021-04-02 08:30:41 字數 909 閱讀 7221

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...