西西軟件園多重安全檢測(cè)下載網(wǎng)站、值得信賴的軟件下載站!
軟件
軟件
文章
搜索

首頁西西教程數(shù)據(jù)庫教程 → 龐大的業(yè)務(wù)系統(tǒng)數(shù)據(jù)庫管理T-SQL經(jīng)驗(yàn)總結(jié)

龐大的業(yè)務(wù)系統(tǒng)數(shù)據(jù)庫管理T-SQL經(jīng)驗(yàn)總結(jié)

相關(guān)軟件相關(guān)文章發(fā)表評(píng)論 來源:本站整理時(shí)間:2011/1/11 22:11:07字體大。A-A+

作者:佚名點(diǎn)擊:55次評(píng)論:0次標(biāo)簽: SQL 數(shù)據(jù)庫

  • 類型:數(shù)據(jù)庫類大。660KB語言:中文 評(píng)分:5.0
  • 標(biāo)簽:
立即下載
 在龐大的業(yè)務(wù)系統(tǒng)背后,一定有數(shù)據(jù)庫管理系統(tǒng)的支持。在現(xiàn)代以數(shù)據(jù)為中心的開發(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)交互的過程中,可能兩邊的狀態(tài)碼定義的不同,那么就需要映射。在這種場(chǎng)景下,強(qiáng)烈建議這種映射不要放在視圖定義或SQL查詢中,因?yàn)檫@會(huì)降低查詢的性能。

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

5.在表變量上設(shè)計(jì)主鍵是有百益而無一害的,臨時(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。
--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篩選子句要以選擇性高的放在前面,選擇性低或沒有選擇性的放在后面。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是連接語句,把篩選子句寫在JOIN … ON上與寫在WHERE后面沒有區(qū)別,但是感覺兩者職責(zé)不分,代碼不夠幽雅。

    相關(guān)評(píng)論

    閱讀本文后您有什么感想? 已有人給出評(píng)價(jià)!

    • 8 喜歡喜歡
    • 3 頂
    • 1 難過難過
    • 5 囧
    • 3 圍觀圍觀
    • 2 無聊無聊

    熱門評(píng)論

    最新評(píng)論

    發(fā)表評(píng)論 查看所有評(píng)論(0)

    昵稱:
    表情: 高興 可 汗 我不要 害羞 好 下下下 送花 屎 親親
    字?jǐn)?shù): 0/500 (您的評(píng)論需要經(jīng)過審核才能顯示)