黄色网页视频 I 影音先锋日日狠狠久久 I 秋霞午夜毛片 I 秋霞一二三区 I 国产成人片无码视频 I 国产 精品 自在自线 I av免费观看网站 I 日本精品久久久久中文字幕5 I 91看视频 I 看全色黄大色黄女片18 I 精品不卡一区 I 亚洲最新精品 I 欧美 激情 在线 I 人妻少妇精品久久 I 国产99视频精品免费专区 I 欧美影院 I 欧美精品在欧美一区二区少妇 I av大片网站 I 国产精品黄色片 I 888久久 I 狠狠干最新 I 看看黄色一级片 I 黄色精品久久 I 三级av在线 I 69色综合 I 国产日韩欧美91 I 亚洲精品偷拍 I 激情小说亚洲图片 I 久久国产视频精品 I 国产综合精品一区二区三区 I 色婷婷国产 I 最新成人av在线 I 国产私拍精品 I 日韩成人影音 I 日日夜夜天天综合

T-SQL經(jīng)驗(yàn)總結(jié)

系統(tǒng) 2006 0

在龐大的業(yè)務(wù)系統(tǒng)背后,一定有數(shù)據(jù)庫(kù)管理系統(tǒng)的支持。在現(xiàn)代以數(shù)據(jù)為中心的開(kāi)發(fā)時(shí)代,SQL編程也顯得尤為重要。下面總結(jié)下我最近SQL編程的一些經(jīng)驗(yàn):

1.SELECT查詢要列出所有要查詢的字段

2.注意UNION和UNION ALL的區(qū)別,在IN,OR,UNION ALL這三種方案中,UNION ALL的執(zhí)行效率是最高的。

3.視圖定義要盡量簡(jiǎn)單,最好不要包含業(yè)務(wù)邏輯。比如:在業(yè)務(wù)系統(tǒng)中,單據(jù)會(huì)有多種狀態(tài),那么在系統(tǒng)與系統(tǒng)交互的過(guò)程中,可能兩邊的狀態(tài)碼定義的不同,那么就需要映射。在這種場(chǎng)景下,強(qiáng)烈建議這種映射不要放在視圖定義或SQL查詢中,因?yàn)檫@會(huì)降低查詢的性能。

4.表變量與臨時(shí)表的選擇。表變量會(huì)將數(shù)據(jù)存儲(chǔ)在數(shù)據(jù)庫(kù)服務(wù)的內(nèi)存中,臨時(shí)表會(huì)將數(shù)據(jù)存儲(chǔ)在數(shù)據(jù)庫(kù)服務(wù)器的磁盤上,會(huì)產(chǎn)生I/O,因此臨時(shí)表消耗資料要多些,性能顯示要差些。一般來(lái)說(shuō),建議采用表變量。如果數(shù)據(jù)量大(選取的字段多,有大字段,數(shù)據(jù)條目超過(guò)10W),又要連續(xù)使用多次的,建議用臨時(shí)表。

5.在表變量上設(shè)計(jì)主鍵是有百益而無(wú)一害的,臨時(shí)表上更應(yīng)該設(shè)計(jì)主鍵了。設(shè)計(jì)主鍵主要是讓數(shù)據(jù)有序存儲(chǔ),提高查詢性能。

6.要把握INNER JOIN和LEFT/RIGHT JOIN的區(qū)別。選擇好了可以使SQL很簡(jiǎn)潔高效。

7.EXISTS的效率比IN要好十倍的樣子。下面三個(gè)版本的效果,V1<V2<V3。

sql

      --V1

DELETE FROM dbo.Master

WHERE TransactionNumber IN

(

SELECT OriginalTransactionNumber FROM dbo.MasterHistory WITH(NOLOCK)

)



--V2

DELETE FROM dbo.Master

WHERE EXISTS

(

SELECT 1 FROM dbo.MasterHistory b WITH(NOLOCK)

WHERE b.OriginalTransactionNumber=TransactionNumber

)



--V3

DELETE a

FROM dbo.Master a

INNER JOIN dbo.MasterHistory b WITH(NOLOCK)

ON a.TransactionNumber=b.OriginalTransactionNumber


    

8.WHERE篩選子句要以選擇性高的放在前面,選擇性低或沒(méi)有選擇性的放在后面。JOIN … ON中的連接條件中要避免左右兩邊字段的類型轉(zhuǎn)換,比如a.ItemNumber是NCHAR(25),而b.ItemNumber是VARCHAR(25),這樣會(huì)嚴(yán)重影響性能。解決方案是,一在設(shè)計(jì)階段注意規(guī)范,二是可以臨時(shí)在JOIN … ON子句中做顯式類型轉(zhuǎn)換。另外,WHERE是篩選子句,JOIN … ON是連接語(yǔ)句,把篩選子句寫在JOIN … ON上與寫在WHERE后面沒(méi)有區(qū)別,但是感覺(jué)兩者職責(zé)不分,代碼不夠幽雅。

??? 先寫到這里,以后有更多經(jīng)驗(yàn),心得再來(lái)更新。如果你有更多經(jīng)驗(yàn),不妨民分享于我。謝謝。

T-SQL經(jīng)驗(yàn)總結(jié)


更多文章、技術(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)論