天天躁日日躁狠狠躁AV麻豆-天天躁人人躁人人躁狂躁-天天澡夜夜澡人人澡-天天影视香色欲综合网-国产成人女人在线视频观看-国产成人女人视频在线观看

有關T-SQL的10個好習慣

  1. 在生產環境中不要出現Select *

  這一點我想大家已經是比較熟知了,這樣的錯誤相信會犯的人不會太多。但我這里還是要說一下。

  不使用Select *的原因主要不是坊間所流傳的將*解析成具體的列需要產生消耗,這點消耗在我看來完全可以忽略不計。更主要的原因來自以下兩點:

  • 擴展方面的問題
  • 造成額外的書簽查找或是由查找變為掃描

  擴展方面的問題是當表中添加一個列時,Select *會把這一列也囊括進去,從而造成上面的第二種問題。

  而額外的IO這點顯而易見,當查找不需要的列時自然會產生不必要的IO,下面我們通過一個非常簡單的例子來比較這兩種差別,如圖1所示。

1圖1.*帶來的不必要的IO

  2. 聲明變量時指定長度

  這一點有時候會被人疏忽,因為對于T-SQL來說,如果對于變量不指定長度,則默認的長度會是1。考慮下面這個例子,如圖2所示。

2圖2.不指定變量長度有可能導致丟失數據

  3. 使用合適的數據類型

  合適的數據類型首先是從性能角度考慮,關于這一點,我寫過一篇文章詳細的介紹過,有興趣可以閱讀:對于表列數據類型選擇的一點思考,這里我就不再細說了

  不要使用字符串類型存儲日期數據,這一點也需要強調一些,有時候你可能需要定義自己的日期格式,但這樣做非常不好,不僅是性能上不好,并且內置的日期時間函數也不能用了。

  4. 使用Schema前綴來選擇表

  解析對象的時候需要更多的步驟,而指定Schema.Table這種方式就避免了這種無謂的解析。

  不僅如此,如果不指定Schema容易造成混淆,有時會報錯。

  還有一點是,Schema使用的混亂有可能導致更多的執行計劃緩存,換句話說,就是同樣一份執行計劃被多次緩存,讓我們來看圖3的例子。

3圖3.不同的schema選擇不同導致同樣的查詢被多次緩存

  5. 命名規范很重要

  推薦使用實體對象+操作這種方式,比如Customer_Update這種方式。在一個大型一點的數據庫會存在很多存儲過程,不同的命名方式使得找到需要的存儲過程變得很不方便。因此有可能造成另一種問題,就是重復創建存儲過程,比如上面這個例子,有可能命名規范不統一的情況下又創建了一個叫UpdateCustomer的存儲過程。

  6. 插入大量數據時,盡量不要使用循環,可以使用CTE,如果要使用循環,也放到一個事務中

  這點其實顯而易見。SQL Server是隱式事務提交的,所以對于每一個循環中的INSERT,都會作為一個事務提交。這種效率可想而知,但如果將1000條語句放到一個事務中提交,效率無疑會提升不少。

  打個比方,去銀行存款,是一次存1000效率高,還是存10次100?

  7. where條件之后盡量減少使用函數或數據類型轉換

  換句話說,WHERE條件之后盡量可以使用可以嗅探參數的方式,比如說盡量少用變量,盡量少用函數,下面我們通過一個簡單的例子來看這之間的差別。如圖4所示。

4圖4.在Where中使用不可嗅探的參數導致的索引查找

  對于另外一些情況來說,盡量不要讓參數進行類型轉換,再看一個簡單的例子,我們可以看出在Where中使用隱式轉換代價巨大。如圖5所示。

5圖5.隱式轉換帶來的性能問題

  8. 不要使用舊的連接方式,比如(from x,y,z)

  可能導致效率底下的笛卡爾積,當你看到下面這個圖標時,說明查詢分析器無法根據統計信息估計表中的數據結構,所以無法使用Loop join, merge Join和Hash Join中的一種,而是使用效率地下的笛卡爾積。

image  所以,盡量使用Inner join的方式替代from x, y, z這種方式。

  9. 使用游標時,加上只讀只進選項

  首先,我的觀點是:游標是邪惡的,盡量少用。但是如果一定要用的話,請記住,默認設置游標是可進可退的,如果你僅僅設置了

declare c cursorfor 

it知識庫有關T-SQL的10個好習慣,轉載需保留來源!

鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。

主站蜘蛛池模板: 国产精品亚欧美一区二区三区 | 欧美大片免费观看 | 蜜桃成熟时2电影免费观看d | 国产精品人妻无码久久久2022 | 5g天天影院天天看天天爽 | 欧美白妞大战非洲大炮 | 午夜伦伦电影理论片费看 | 午夜阳光影院在线观看视频 | 51精品国产AV无码久久久密桃 | 国产在线精品视亚洲不卡 | 国产品无码一区二区三区在线 | 一边亲着一面膜下奶韩剧免费 | 中文字幕亚洲无线码在线 | 久久99国产亚洲高清观着 | 国产AV白丝爆浆在线播放 | 久久精品在现线观看免费15 | 久久精品观看影院2828 | 久久综合老色鬼网站 | 人人爽久久久噜噜噜丁香AV | 亚洲AV色香蕉一区二区9255 | 一个人免费视频在线观看高清版 | 免费人妻无码AV不卡在线 | 一本之道高清视频在线观看 | 免费看片A级毛片免费看 | 国产亚洲tv在线观看 | 久久久久久久久久久福利观看 | 亚洲欧美视频在线 | 亚洲中文字幕乱码熟女在线 | 亚洲高清无码在线 视频 | qvod在线| 亚洲国产高清在线观看视频 | 国产亚洲va在线电影 | 日本欧美午夜三级 | 国产在线观看的 | 日本人作爰啪啪全过程 | 夫妻性姿势真人做视频 | 美女扒开尿口让男生添动态图 | 国产精品第1页在线观看 | 久久精品中文騷妇女内射 | 日韩亚洲中文欧美在线 | 久草网国产自偷拍 |