伪装有个表Shop,其中有一列ShopName,取100000到100050条数据。3d
ROW_NUMBER 的写法code
SELECT * FROM (
SELECT ShopName , ROW_NUMBER() OVER(ORDER BY ShopName) as R FROM Shop
) t WHERE R>100000 AND R<=100050
OFFSET,FETCH 的写法blog
SELECT ShopName from Shop ORDER BY ShopName OFFSET 100000 ROW FETCH NEXT 50 ROW ONLY
之因此取十万条之后的数据,能明显看出执行时间上的差别。虽然前人们已经给出过不少论证,我这里仍是贴一下比较结果。class
先是ROW_NUMBER语法
再是 OFFSET FETCH im
高下立判,后者高效、易懂、语法简洁有木有!数据
(可是听闻超过5000w条数据后,结果很差说,这个我还没试,手上的库通常到1000w就拆表了,有兴趣的能够试试哦,记得告诉我,咩哈哈哈)db
OFFSET=偏移,跳过img
FETCH = 取di
另外OFFSET能够单独使用,以下,既跳过前十万条:
SELECT ShopName from Shop ORDER BY ShopName OFFSET 100000 ROW
从 SQL SERVER 2000 那个你们还在写TOP的年代,到2005的ROW_NUMBER,再到2012的OFFSET FETCH