存儲過程是一組為了完成特定功能的 SQL 語句集,存儲在數(shù)據(jù)庫中,經(jīng)過第一次編譯后再次調(diào)用不需要再次編譯,用戶通過指定存儲過程的名字并給出參數(shù)(如果該存儲過程帶有參數(shù))來執(zhí)行它。存儲過程是數(shù)據(jù)庫中的一個重要對象。
存儲過程優(yōu)化思路:
盡量利用一些 sql 語句來替代一些小循環(huán),例如聚合函數(shù),求平均函數(shù)等。
中間結(jié)果存放于臨時表,加索引。
少使用游標。sql 是個集合語言,對于集合運算具有較高性能。而 cursors 是過程運算。比如對一個 100 萬行的數(shù)據(jù)進行查詢。游標需要讀表 100 萬次,而不使用游標則只需要少量幾次讀取。
事務越短越好。sqlserver 支持并發(fā)操作。如果事務過多過長,或者隔離級別過高,都會造成并發(fā)操作的阻塞,死鎖。導致查詢極慢,cpu 占用率極地。
使用 try-catch 處理錯誤異常。
查找語句盡量不要放在循環(huán)內(nèi)。