sql between and 與大於,相比拼

2022-02-12 09:22:34 字數 2458 閱讀 3081

先說些廢話,由於種種原因,導致不想寫部落格,可能因為工作忙的關係,以後一旦有時間,一定經常來寫寫,嘮叨嘮叨:

言歸正傳,故事即將上演:

declare

@sysno

intdeclare

@sumcount

intset

@sysno=0

set@sumcount=0

while (1=1)

begin

--先取出top 1 取出一條資料

select

top1

@sysno

=sysno

from #tablename# with(nolock) where status='a

'and (type=

1or type=

2)and sysno >

@sysno

order

by sysno asc

--如果查不到,則退出

if@@rowcount=0

--@@rowcount = 0 @sysno=20

begin

break

enddeclare

@positionid

intdeclare

@num

intdeclare

@where

nvarchar(50)

set@num=0

set@positionid=70

while(1=1)

begin

set@num

=@num+1

set@where

=n'自定義'+

convert(varchar(10),@num)

--判斷是否插入過

ifnot

exists(

select

top1 a from #table# with(nolock)

where description=

@where

)begin

--print @where

insert

into #table#(a

,b,c

,d,e

,f,g,h)

values

(4,@positionid,0,@sysno,@where,getdate(),'

system

','a

')set

@positionid

=@positionid+1

set@sumcount

=@sumcount+1

end--

插入到20個後,停止插入進入下乙個品牌

if(@num

=20)

break

end--

如果插入大於1000條,清0停頓10秒

if(@sumcount

=1000)

begin

set@sumcount=0

waitfor delay '

0:0:10

'end

end

上面這段**功能是(改版後的),迴圈取出#table#中的資料,取出的sysno為後面的迴圈插入資料做準備。

這裡有兩個迴圈,第乙個迴圈由@@rowcount跳出迴圈

第二個迴圈由@num=20跳出

回憶當時寫此sql**歷程:

1.當時我在想,第乙個迴圈想做成表變數,或者用游標實現,但我想如果用這兩者,都會產生額外的開銷,故我用下面這段**

select

top1

@sysno

=sysno

from #tablename# with(nolock) where status='a

'and (type=

1or type=

2)and sysno not

between

0and

@sysno

order

by sysno asc

一看上去,也沒啥問題,後來,經過一位同事review**,結果查出來

用以下**比用 between..and 要快好多倍,很感謝她。

最後經過多次修改,最後**完整版本,在最上面。

僅個人總結,僅供參考,如果不足之處,懇請指正。

小偷與大偷

發生在兩個菜市場的兩件事情,就像 裡或者電視中看到的一樣,在現實世界中確實存在。第一件事 我把它稱為小偷。聽說今年的大蒜很貴,具體貴到什麼程度我不知道,因為主觀上認為它很貴就沒有買,炒菜幹什麼的能用蔥就用蔥了,還因為在冬天來臨的時候我買了30斤大蔥。但是這天我突然想買了,並且知道只有4.5元一斤,其...

FTPS 與SFTP大對決

ssh 檔案傳輸協議ssh file transfer protocol sftp 也稱為通過安全套接層的檔案傳輸協議file transfer protocol via secure socket layer,以及 ftps 都是最常見的安全 ftp 通訊技術,用於通過 tcp 協議將計算機檔案從...

Servlet Servlet與JSP九大內建物件

servlet與jsp九大內建物件對照表 jsp內建物件out與servlet中response.getwriter 獲得物件並不完全匹配,jsp中是jspwriter型別,而servlet中獲得是printwriter型別,其實乙個是在jsp中輸出,乙個是在servlet中輸出,型別肯定不一樣 r...