線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:1781
推到 Plurk!
推到 Facebook!

在存儲過程中判斷一個記錄是否存在

尚未結案
longjibo
一般會員


發表:18
回覆:18
積分:12
註冊:2002-11-08

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-01-07 08:13:24 IP:218.16.xxx.xxx 未訂閱
在MSSQL的存儲過程中判斷一個記錄是否存在,用以下兩條語句哪一條要好?(此處PODETAIL表中有50個字段,共80萬條記錄) 1) if not exists (select * from PODETAIL where SEQ_NO = @c2 and PO_NO = @c9)return 2) if not exists (select PO_NO from PODETAIL where SEQ_NO = @c2 and PO_NO = @c9) return
T.J.B
版主


發表:29
回覆:532
積分:497
註冊:2002-08-14

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-01-07 10:05:24 IP:61.220.xxx.xxx 未訂閱
第2句較好 時間花費較短 天行健 君子當自強不息~~@.@
------
天行健
君子當自強不息~~@.@
P.D.
版主


發表:603
回覆:4038
積分:3874
註冊:2006-10-31

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-01-07 12:06:02 IP:61.66.xxx.xxx 未訂閱
引言: 在MSSQL的存儲過程中判斷一個記錄是否存在,用以下兩條語句哪一條要好?(此處PODETAIL表中有50個字段,共80萬條記錄) 1) if not exists (select * from PODETAIL where SEQ_NO = @c2 and PO_NO = @c9)return 2) if not exists (select PO_NO from PODETAIL where SEQ_NO = @c2 and PO_NO = @c9) return
我再補充一下T.J.B 兄的結論, 問題出在 * 及PO_NO 當我們使用 * 時, sql送到server端時, SQL要將 * 解譯成所有欄位, 也就是會 轉換成 select PO_NO, PO_NO1, PO_NO2, ....., 當然不如你直接下 select PO_NO , server並無須做任何轉換行為, 所以時間會快很多!
Mickey
版主


發表:77
回覆:1882
積分:1390
註冊:2002-12-11

發送簡訊給我
#4 引用回覆 回覆 發表時間:2003-01-08 09:26:05 IP:61.219.xxx.xxx 未訂閱
引言: 第2句較好 時間花費較短 天行健 君子當自強不息~~@.@
我覺得兩個 SQL 應該一樣 , exists function 應該是看 @@rowcount (Global 變數) =0 or >0, 跟 Result dataset 應無關係, 不過我不確定, 有錯誤請指正. /* 使用中文很辛苦,中華男兒當自強 */
系統時間:2024-11-23 6:55:36
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!