标签:
我用五百万的数据来测试,有兴趣的大家可以试试千万级的;
1、先添加大量数据
2、普通 分页
A、ROW_NUMBER()OVER
SELECT * FROM ( SELECT ROW_NUMBER() OVER ( ORDER BY T.UserID ) AS row , * FROM Users AS T ) AS TT WHERE TT.row BETWEEN 999000 AND 1000000;
测:【百万级】第一页时间:126MS, 100W的时间 1073MS, 接近第一页10倍,500W的时间 58696MS 100W的55倍,第一页的466倍。
B、两次TOP分页
SELECT TOP 1000 * FROM Users WHERE UserID NOT IN ( SELECT TOP ( 1000 * ( 5000 - 1 ) ) UserID FROM Users ORDER BY UserID ) ORDER BY UserID;
测:【百万级】第一页时间:140MS, 100W的时间 1190MS,500W的时间 5526MS 100W的5倍,第一页的39倍。
为什么我测试的获取(500W)时,TOP TOP 要比ROW_NUMBER()效率更好一些呢?
最起码:100W以内的数据可以采用ROW_NUMBER()这样的分页,更优雅效率也稍微好一些,勉强可以接受的,数据再大些,如何优化代码也无济于事的,这牵扯的是数据库的计算能力,类似这两种的都PASS。
2、优化分页(第一次)
标签:
原文地址:http://www.cnblogs.com/eyren/p/5062886.html