SQL查詢效率 100w資料查詢只要1秒

2021-05-21 20:06:32 字數 2978 閱讀 2722

機器情況

p4: 2.4

記憶體: 1 g

os: windows 2003

資料庫: ms sql server 2000

目的: 查詢效能測試,比較兩種查詢的效能

sql查詢效率 step by step

--setp 1.

--建表

create

table

t_userinfo

(userid 

intidentity(1

,1) primary

keynonclustered

,nick 

varchar(50

) not

null

default'',

classid 

intnot

null

default0,

writetime 

datetime

notnull

default

getdate())

go--

建索引create

clustered

index

ix_userinfo_classid 

ont_userinfo(classid)

go--

step 2.

declare

@iint

declare

@kint

declare

@nick

varchar(10

)set@i=

1while

@i<

1000000

begin

set@k=@i

%10set@nick

=convert

(varchar,@i

)insert

into

t_userinfo(nick,classid,writetime) 

values

(@nick,@k

,getdate

())set@i=

@i+1end

--耗時 08:27 ,需要耐心等待

--step 3.

select

top20

userid,nick,classid,writetime 

from

t_userinfo 

where

userid 

notin

(select

top900000

userid 

from

t_userinfo 

order

byuserid 

asc)

--耗時 8 秒 ,夠長的

--step 4.

select

a.userid,b.nick,b.classid,b.writetime 

from

(select

top20

a.userid 

from

(select

top900020

userid 

from

t_userinfo 

order

byuserid 

asc) a 

order

bya.userid 

desc

) a 

inner

join

t_userinfo b 

ona.userid 

=b.userid 

order

bya.userid 

asc--

耗時 1 秒,太快了吧,不可以思議

--step 5 where 查詢

select

top20

userid,nick,classid,writetime 

from

t_userinfo 

where

classid =1

anduserid 

notin

(select

top90000

userid 

from

t_userinfo 

where

classid =1

order

byuserid 

asc)

--耗時 2 秒

--step 6 where 查詢

select

a.userid,b.nick,b.classid,b.writetime 

from

(select

top20

a.userid 

from

(select

top90000

userid 

from

t_userinfo

where

classid =1

order

byuserid 

asc) a 

order

bya.userid 

desc

) a 

inner

join

t_userinfo b 

ona.userid 

=b.userid 

order

bya.userid 

asc--

查詢分析器顯示不到 1 秒.

查詢效率分析:

子查詢為確保消除重複值,必須為外部查詢的每個結果都處理巢狀查詢。在這種情況下可以考慮用聯接查詢來取代。

如果要用子查詢,那就用exists替代in、用not exists替代not in。因為exists引入的子查詢只是測試是否存在符合子查詢中指定條件的行,效率較高。無論在哪種情況下,not in都是最低效的。因為它對子查詢中的表執行了乙個全表遍歷。

建立合理的索引,避免掃瞄多餘資料,避免表掃瞄!

幾百萬條資料,照樣幾十毫秒完成查詢.

SQL查詢效率 100w資料查詢只要1秒

sql查詢效率 100w資料查詢只要1秒 關於sql查詢效率,100w資料,查詢只要1秒,與您分享 機器情況 p4 2.4 記憶體 1 g os windows 2003 資料庫 ms sql server 2000 目的 查詢效能測試,比較兩種查詢的效能 sql查詢效率 step by step ...

SQL查詢效率 100w資料查詢只要1秒

關於sql查詢效率,100w資料,查詢只要1秒,與您分享 機器情況 p4 2.4 記憶體 1 g os windows 2003 資料庫 ms sql server 2000 目的 查詢效能測試,比較兩種查詢的效能 sql查詢效率 step by step setp 1.建表 create tabl...

SQL查詢效率 100w資料查詢只要1秒

關於sql查詢效率,100w資料,查詢只要1秒,與您分享 機器情況 p4 2.4 記憶體 1 g os windows 2003 資料庫 ms sql server 2000 目的 查詢效能測試,比較兩種查詢的效能 sql查詢效率 step by step setp 1.建表 create tabl...