T-SQL精髓總結(jié)

一、WITH(NOLOCK)

1汽馋、使用WITH(NOLOCK)時查詢不受其它排他鎖阻塞

2千元、WITH(NOLOCK) 不發(fā)布共享鎖來阻止其他事務(wù)修改當(dāng)前事務(wù)讀取的數(shù)據(jù)

使用場景

1: 基礎(chǔ)數(shù)據(jù)表颤芬,這些表的數(shù)據(jù)很少變更逃延。
2:歷史數(shù)據(jù)表,這些表的數(shù)據(jù)很少變更簿盅。
3:業(yè)務(wù)允許臟讀情況出現(xiàn)涉及的表挥下。
4:數(shù)據(jù)量超大的表,出于性能考慮桨醋,而允許臟讀棚瘟。

二、批量操作

方法一:使用子查詢

使用IN 或 exists關(guān)鍵字

in是把外表和內(nèi)表作hash 連接喜最,而exists 是對外表作循環(huán)偎蘸,每次循環(huán)再對內(nèi)表進行查詢。
一直以來認為exists 比in 效率高的說法是不準(zhǔn)確的。如果查詢的兩個表大小相當(dāng)迷雪,那么用in 和exists 差別不大限书。
如果兩個表中一個較小,一個是大表章咧,則子查詢表大的用exists蔗包,子查詢表小的用in

NOT IN 或 NOT EXISTS

如果查詢語句使用了not in 那么內(nèi)外表都進行全表掃描,沒有用到索引慧邮;
而not extsts 的子查詢依然能用到表上的索引。所以無論那個表大舟陆,用not exists 都比not in 要快误澳。

方法二:使用JOIN關(guān)聯(lián)表

如果直接對多個數(shù)據(jù)庫表進行join,數(shù)據(jù)量很大時秦躯,效率很低

解決方案:采用臨時表

CREATE TABLE #tmp
(
    ID INT IDENTITY(1,1) PRIMARY KEY,
    ItemNumber CHAR(25),
    CountryCode CHAR(3)
)

將需要處理的數(shù)據(jù)關(guān)鍵信息存入臨時表忆谓,使用臨時表進行join,大大提升性能

三踱承、循環(huán)操作

游標(biāo)CURSOR

DECLARE Template_Cursor CURSOR
FOR
SELECT LastName, FirstName FROM Northwind.dbo.Employees
OPEN Template_Cursor 
FETCH NEXT FROM Template_Cursor 
INTO @LastName, @FirstName

WHILE @@FETCH_STATUS = 0
BEGIN
      .....
      FETCH NEXT FROM Template_Cursor 
END

CLOSE Template_Cursor 
DEALLOCATE Template_Cursor 

@@fetch_status

@@fetch_status是MicroSoft SQL SERVER的一個全局變量
其值有以下三種倡缠,分別表示三種不同含義:【返回類型integer】
0 FETCH 語句成功
-1 FETCH 語句失敗或此行不在結(jié)果集中
-2 被提取的行不存在
@@fetch_status值的改變是通過fetch next from實現(xiàn)的
“FETCH NEXT FROM Cursor”

四、類型轉(zhuǎn)換

將int類型轉(zhuǎn)化為char
select CAST(20201015 AS CHAR(10))

將int類型轉(zhuǎn)化為char再轉(zhuǎn)化為date
select CAST(CAST(20201015 AS CHAR(10)) AS DATE)

對datetime進行計算以后轉(zhuǎn)為date類型
SELECT CAST(DATEADD(DAY, -180, GETDATE()) as DATE)

對日期進行運算以后截取為char茎活,再轉(zhuǎn)為int類型
DECLARE @start_date INT = CONVERT(INT,CONVERT(CHAR(10), DATEADD(d, -180, GETDATE()), 112))

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末昙沦,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子载荔,更是在濱河造成了極大的恐慌盾饮,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,122評論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件懒熙,死亡現(xiàn)場離奇詭異丘损,居然都是意外死亡,警方通過查閱死者的電腦和手機工扎,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,070評論 3 395
  • 文/潘曉璐 我一進店門徘钥,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人肢娘,你說我怎么就攤上這事呈础。” “怎么了蔬浙?”我有些...
    開封第一講書人閱讀 164,491評論 0 354
  • 文/不壞的土叔 我叫張陵猪落,是天一觀的道長。 經(jīng)常有香客問我畴博,道長笨忌,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,636評論 1 293
  • 正文 為了忘掉前任俱病,我火速辦了婚禮官疲,結(jié)果婚禮上袱结,老公的妹妹穿的比我還像新娘。我一直安慰自己途凫,他們只是感情好垢夹,可當(dāng)我...
    茶點故事閱讀 67,676評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著维费,像睡著了一般果元。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上犀盟,一...
    開封第一講書人閱讀 51,541評論 1 305
  • 那天而晒,我揣著相機與錄音,去河邊找鬼阅畴。 笑死倡怎,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的贱枣。 我是一名探鬼主播监署,決...
    沈念sama閱讀 40,292評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼纽哥!你這毒婦竟也來了钠乏?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,211評論 0 276
  • 序言:老撾萬榮一對情侶失蹤昵仅,失蹤者是張志新(化名)和其女友劉穎缓熟,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體摔笤,經(jīng)...
    沈念sama閱讀 45,655評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡够滑,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,846評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了吕世。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片彰触。...
    茶點故事閱讀 39,965評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖命辖,靈堂內(nèi)的尸體忽然破棺而出况毅,到底是詐尸還是另有隱情,我是刑警寧澤尔艇,帶...
    沈念sama閱讀 35,684評論 5 347
  • 正文 年R本政府宣布尔许,位于F島的核電站,受9級特大地震影響终娃,放射性物質(zhì)發(fā)生泄漏味廊。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,295評論 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望余佛。 院中可真熱鬧柠新,春花似錦、人聲如沸辉巡。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,894評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽郊楣。三九已至憔恳,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間净蚤,已是汗流浹背喇嘱。 一陣腳步聲響...
    開封第一講書人閱讀 33,012評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留塞栅,地道東北人。 一個月前我還...
    沈念sama閱讀 48,126評論 3 370
  • 正文 我出身青樓腔丧,卻偏偏與公主長得像放椰,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子愉粤,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,914評論 2 355

推薦閱讀更多精彩內(nèi)容

  • 一衣厘,SQL語句性能優(yōu)化 1如蚜, 對查詢進行優(yōu)化,應(yīng)盡量避免全表掃描影暴,首先應(yīng)考慮在 where 及 order by ...
    沙卡拉卡s閱讀 528評論 0 1
  • SQL語句性能優(yōu)化 1错邦, 對查詢進行優(yōu)化,應(yīng)盡量避免全表掃描型宙,首先應(yīng)考慮在 where 及 order by 涉及...
    林海之閱讀 160評論 0 0
  • 對查詢進行優(yōu)化撬呢,應(yīng)盡量避免全表掃描,首先應(yīng)考慮在 where 及 order by 涉及的列上建立索引妆兑。 應(yīng)盡量避...
    梅西愛騎車閱讀 229評論 0 1
  • 1魂拦、對查詢進行優(yōu)化,應(yīng)盡量避免全表掃描搁嗓,首先應(yīng)考慮在where及order by涉及的列上建立索引芯勘。 2、應(yīng)盡量避...
    清夢壓星河了閱讀 147評論 0 0
  • 一腺逛,SQL語句性能優(yōu)化 1荷愕, 對查詢進行優(yōu)化,應(yīng)盡量避免全表掃描,首先應(yīng)考慮在where 及 order by 涉...
    芥川世之介閱讀 105評論 0 0