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

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

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

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

1.使用SET NOCOUNT ON選項(xiàng)

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

2.使用確定的Schema

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

3.自定義存儲(chǔ)過(guò)程不要以sp_開頭

因?yàn)橐詓p_開頭的存儲(chǔ)過(guò)程默認(rèn)為系統(tǒng)存儲(chǔ)過(guò)程,所以首先會(huì)去master庫(kù)中找,然后在當(dāng)前數(shù)據(jù)庫(kù)找。建議使用USP_或者其他標(biāo)識(shí)開頭。

4.使用sp_executesql替代exec

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

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

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

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

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

7.使用try-catch來(lái)處理錯(cuò)誤異常

SQL Server 2005及以上版本提供對(duì)try-catch的支持,語(yǔ)法為:

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)化存儲(chǔ)過(guò)程的七種方法


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

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號(hào)聯(lián)系: 360901061

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

【本文對(duì)您有幫助就好】

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

發(fā)表我的評(píng)論
最新評(píng)論 總共0條評(píng)論
主站蜘蛛池模板: 益阳市| 嘉兴市| 镇赉县| 邯郸市| 临武县| 瑞昌市| 怀宁县| 兴文县| 巨鹿县| 石林| 自治县| 文昌市| 乌鲁木齐县| 襄汾县| 九龙县| 二连浩特市| 内黄县| 汶上县| 乌拉特前旗| 津市市| 和平区| 进贤县| 青河县| 吉安县| 静海县| 连山| 深圳市| 元朗区| 荔波县| 定远县| 奉化市| 衡水市| 金坛市| 穆棱市| 婺源县| 托里县| 开鲁县| 易门县| 天全县| 西峡县| 平阴县|