SQL Update一條記錄長達30秒

2021-06-11 22:11:06 字數 612 閱讀 9888

今天我執行乙個儲存過程的時候,發現時間居然長達31秒

剛開始以為是伺服器的問題,或者因為跨伺服器訪問而導致速度慢

但測試調撥單的時候,卻沒有發現速度慢得問題,

於是乎,我開始一條條語句進行測試,終於讓我發現了問題的所在。

update qh_baken.db_cs.dbo.tf_pos set qty_ps_unsh = isnull(qty_ps_unsh, 0) + @num, qty1_ps_unsh = 0 where os_id = 'so' and os_no = @os_no and itm = @est_itm

qty_ps_unsh 在倍康系統中預設值就是null,

因此為了簡單,所以使用 qty_ps_unsh = isnull(qty_ps_unsh, 0) + @num

雖然找到了問題的所在,卻讓我冒出了乙個問題來。在這個系統中 我的查詢條件中有這種類似的用法

(isnull(b.qty, 0) - isnull(b.qty_ps, 0) - isnull(b.qty_pre, 0) - isnull(b.qty_ps_unsh, 0) - isnull(b.qty_pre_unsh, 0) > 0)

這種用法是否也對查詢效率造成比較大的影響?

上一條記錄下一條記錄

select top 1 from 表 where id 當前id order by id desc select top 1 from 表 where id 當前id order by id desc 上一條記錄 select top 1 blogid from gcc bloginfo wher...

Oracle獲取上一條記錄或上一條記錄函式

獲取上一條記錄,若沒有記錄則值為0,其中 lag news id,1,0 news id為根據哪乙個字段進行檢查,1 為每次偏移量,0 為沒有上一條時的返回值 select n.lag news id,1,0 over order by news id asc nid from news n 執行結...

更新最後一條記錄

修改最後一條記錄 update userinfo set userid 55 where 1 order by userid desc limit 1 刪除第一條記錄 delete from userinfo where 1 order by userid limit 1 mysql 總結 在寫這段...