日韩久久久精品,亚洲精品久久久久久久久久久,亚洲欧美一区二区三区国产精品 ,一区二区福利

SQL Server 優(yōu)化存儲過程的七種方法

系統(tǒng) 2266 0
原文: SQL Server 優(yōu)化存儲過程的七種方法

優(yōu)化存儲過程有很多種方法,下面介紹最常用的7種。

1.使用SET NOCOUNT ON選項

我們使用SELECT語句時,除了返回對應(yīng)的結(jié)果集外,還會返回相應(yīng)的影響行數(shù)。使用SET NOCOUNT ON后,除了數(shù)據(jù)集就不會返回額外的信息了,減小網(wǎng)絡(luò)流量。

2.使用確定的Schema

在使用表,存儲過程,函數(shù)等等時,最好加上確定的Schema。這樣可以使SQL Server直接找到對應(yīng)目標(biāo),避免去計劃緩存中搜索。而且搜索會導(dǎo)致編譯鎖定,最終影響性能。比如select * from dbo.TestTable比select * from TestTable要好。from TestTable會在當(dāng)前Schema下搜索,如果沒有,再去dbo下面搜索,影響性能。而且如果你的表是csdn.TestTable的話,那么select * from TestTable會直接報找不到表的錯誤。所以寫上具體的Schema也是一個好習(xí)慣。

3.自定義存儲過程不要以sp_開頭

因為以sp_開頭的存儲過程默認(rèn)為系統(tǒng)存儲過程,所以首先會去master庫中找,然后在當(dāng)前數(shù)據(jù)庫找。建議使用USP_或者其他標(biāo)識開頭。

4.使用sp_executesql替代exec

原因在Inside Microsoft SQL Server 2005 T-SQL Programming書中的第四章Dynamic SQL里面有具體描述。這里只是簡單說明一下:sp_executesql可以使用參數(shù)化,從而可以重用執(zhí)行計劃。exec就是純拼SQL語句。

5.少使用游標(biāo)

可以參考Inside Microsoft SQL Server 2005 T-SQL Programming書中的第三章Cursors里面有具體描述。總體來說,SQL是個集合語言,對于集合運算具有較高的性能,而Cursors是過程運算。比如對一個100萬行的數(shù)據(jù)進行查詢,游標(biāo)需要讀表100萬次,而不使用游標(biāo)只需要少量幾次讀取。

6.事務(wù)越短越好

SQL Server支持并發(fā)操作。如果事務(wù)過多過長,或是隔離級別過高,都會造成并發(fā)操作的阻塞,死鎖。此時現(xiàn)象是查詢極慢,同時cup占用率極低。

7.使用try-catch來處理錯誤異常

SQL Server 2005及以上版本提供對try-catch的支持,語法為:

begin try?
????? ----your code
end try
begin catch
?????? --error dispose
end catch

一般情況可以將try-catch同事務(wù)結(jié)合在一起使用。

begin try
??? begin tran
??????? --select
??????? --update
??????? --delete
??????? --…………
??? commit
end try
begin catch
??? --if error
??? rollback
end catch

SQL Server 優(yōu)化存儲過程的七種方法


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯(lián)系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發(fā)表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 崇文区| 平南县| 乌拉特后旗| 东乌| 本溪| 穆棱市| 宾川县| 沧州市| 阳高县| 顺义区| 富川| 福海县| 汉阴县| 中卫市| 五指山市| 浮梁县| 耿马| 黄骅市| 九江市| 湟源县| 武汉市| 井陉县| 从江县| 抚顺市| 县级市| 行唐县| 东海县| 丹寨县| 夏河县| 台南县| 铁力市| 长海县| 邢台县| 深水埗区| 潞城市| 昭苏县| 图木舒克市| 昆山市| 双辽市| 伊通| 郁南县|