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