sql分頁效能測試結果

來源:互聯網
上載者:User

標籤:des   style   blog   color   os   資料   re   c   

--方案一:

declare @d datetimeset @d = getdate()select top 10 * from Info where ID not in (select top 9990 ID from Info order by ID) order by ID select [not in方法升序分頁執行花費時間(毫秒)]=datediff(ms,@d,getdate()) --430ms

 

--方案二:

declare @s datetimeset @s = getdate()select top 10 * from info where ID >=(select max(ID) from (select top 9991 ID from info order by ID) as T) order by IDselect [Max方法升序分頁執行花費時間(毫秒)]=datediff(ms,@s,getdate()) --13ms


--方案三:

declare @q datetimeset @q = getdate()select top 10 * from Info where ID <=(select min(ID) from (select top 9991 ID from Info order by ID desc) as T) order by ID descselect [Min方法降序分頁執行花費時間(毫秒)]=datediff(ms,@q,getdate())--10ms

 

--方案四:

declare @r datetimeset @r = getdate()select top 10 * from ( select row_number()over( order by id desc) as rowNumber,* from info) Twhere T.rowNumber>0 select [row_number()方法降序分頁執行花費時間(毫秒)]=datediff(ms,@r,getdate())--3ms

 

--方案五:

with infos as(select r.*, row_number()over(order by r.id desc) as r from [Info]  r) select * from infos where r between 1 and 30;

方案五沒有採取top的形式取資料,而是用了between,相同點都用了row_number()函數。根據平常的分頁習慣,方案四、五效率最高,且效能相當.

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.