情境
DBA 反應偵測到有個 Update Query 很頻繁,且通常緊接著 Update 後都會再進 Select 把剛剛 Update 的資料拉走,資料量太大時頻率太高導致 SQL 效能瓶頸,建議調整成 Update 後直接把剛剛異動的資料拉走,而不是拆兩段查詢。
解決方案
當 SQL Server 執行 Update 時會 Lock 相關要異動的資料,並把異動前後的資料放入 Log 中,如果希望能在一次 Query 中就把資料 Update 並把影響到的資料回傳,可以透過 Ouput
這個子句來達成
Ouput 可用於以下情境
Delete
Insert
Update
Merge
我們有一張表,紀載著每個人的名稱與學期分數
老師大發慈悲想把低於 60 分的人都改成 60 分及格,這時候語法可以這樣下
1 | DECLARE @UpdateLog table( |