日前在Tunning一句語法時,在SSMS的視窗下撰寫TSQL測試。當時發現我用變數當參數來查跟直接用數字來當參數查時會跑不同的執行計畫,Code的範例如下
利用Over子句(視窗函數)的Rows Between來加總特定區間的值
- 86
- 0
- [SQL]TSQL語法技巧
今天在Super SQL Server社團看見有人問了一個問題,他有一個每日銷售金額統計表,他想每日都往前加5天,產生一個view叫做sumof5days,應該如何寫這個查詢呢?
利用 MAXRECURSION來突破CTE預設遞迴次數
- 712
- 0
- [SQL]TSQL語法技巧
日前有一個需求就是每一年初產出今年所有日期的資料,並寫入資料表中。產出今年所有日期的資料的作法我是採用CTE搭配其遞迴的特性來做
誤用sp_executesql導致無法享受重用執行計畫的好處
- 781
- 0
- [SQL]TSQL語法技巧
日前檢視一支StoreProcedure時無意間發現了這一個問題。當時該SP的開發者在該SP中利用User丟進來的參數來串成他要的Query字串後再透過sp_executesql執行該語法字串。等於是在SP中組出一個Adhoc字串來跑,這樣完全無法享受到重用執行計畫的好處。
開啟IDENTITY_INSERT選項Insert資料時會影響其他Session對相同資料表的Insert嗎?
- 1369
- 0
- [SQL]TSQL語法技巧
- 2018-07-19
近期在撰寫TSQL做資料匯入時,會因為目的資料表有Identity型態的欄位,所以得在該資料表開啟IDENTITY_INSERT後再寫入資料。
字串相加時因型態轉換而導致截斷問題
- 469
- 0
- [SQL]TSQL語法技巧
今天同仁問了一個問題,他用字串動態組了一個超長的語法,但該字串列出來時發現中間少了一些語法,似乎是字串相加時被截掉了。
Constraints在資料含有NULL時的隱憂
NULL在資料庫中一直以來常會被拿出來警世,也看過一些書籍或聽一些演講都會提到盡量不要讓欄位是可以允許NULL的。
使用計算欄位建立索引來加快特定查詢
- 1750
- 0
- [SQL]TSQL語法技巧
現實的資料規劃中常會遇到有人將一些有意義的代號組成一字串來儲存,這樣的設計模式常常會碰到的大問題就是需要拆字串來查詢。而拆字串的方式查詢往往都無法使用索引,因此造成Table Scan進而影響效能。
資料表新增多欄內含預設值的欄位
- 1080
- 0
- [SQL]TSQL語法技巧
純筆記
無窮迴圈的Cursor
- 2180
- 0
- [SQL]TSQL語法技巧
- 2017-05-17
日前一位同仁來告知我說他寫了一支預存程序,但一執行卻跑很久也不會停止,因此請我幫忙看一下該預存程序。
SQL2016新函數String_Split
- 3136
- 0
- [SQL]TSQL語法技巧
SQL2016以前常會有一個需求就是將一個字串用分隔符號拆解後轉成Table來運用,而這個需求在SQL2016中內建了
利用BCP取出存入varbinary(max)欄位的檔案或文件
- 405
- 0
- [SQL]TSQL語法技巧
我們常常會把文件或圖檔轉成二進位後放到SQL資料庫中,但如果要取出該檔案往往需要撰寫程式來將檔案取出,日前楊志強老師分享利用BCP方式也可以簡單做到,筆記一下
將Database相容性層級由90調升後造成DateTime欄位比對異常
- 246
- 0
- [SQL]TroubleShooting
- 2016-11-03
之前有過將SQL2000直升SQL2014的經驗後,因此對於SQL2008R2中部分相容性層級為90的資料庫也起了調升的意念。
Except只會回傳經過distinct的資料列
- 230
- 0
- [SQL]TSQL語法技巧
常常用Except來比對資料差異性,但一直不知道Except有個雷。那就是會distinct回傳的資料列,日前看見楊志強老師分享文才知道,汗顏......
STOPATMARK 及 STOPBEFOREMARK還原資料庫到指定交易點
上個月參加SQL PASS的九月份聚會,講師許致學老師分享了很多種備份還原的Solution。其中一種還原方式是可以指定資料庫還原到特定交易時間,很是有趣。筆記一下
建立合適的索引,來降低Select Top Order By帶來的效能問題
Order By向來是為人垢弊的效能殺手,可是有時又不得排序,也許可以透過建立索引來降低效能的影響。
利用資料表值參數(Table Valued)及預存程序來提升批次更新資料的速度
- 1173
- 0
- [SQL]TSQL語法技巧
日前有一個系統功能是要大量更新資料表的資料,我詢問一下PG預計如何撰寫該功能。PG回覆我說就是用迴圈更新前端餵近來的資料,我聽到當下覺得這樣的做法效能不僅差,且會對SQL造成一定程度的效能影響。
如何查詢目前被Lock住的資料是哪一筆呢?
- 3917
- 0
- [SQL]TSQL語法技巧
當資料表資料發生Blocking時,我們第一時間往往就是檢查是哪一個Session鎖住資料
導致發生Blocking,但該如何查詢是哪一筆資料被鎖住呢 ?
當 Not In 遇上了 Null
- 2701
- 0
- [SQL]TSQL語法技巧
今日同事忽然跑來問我,說資料庫發生一個很奇怪的事。
[ TSQL ] SQL 2016 開始支援 DROP IF EXISTS 語法
- 3806
- 0
- [SQL]TSQL語法技巧
日前上揚志強老師的線上課程時看見楊老師的TSQL中有一句我沒用過的寫法,當下引起了我的興趣而測試了一下。發現該語法只有SQL2016才支援,所以算是新語法,在此分享給大家。
- 1
- 2