row_number()over函数的使用(转)
建立数据表,插入相应数据。表结构如下,Id为自增长主键:

插入100万条测试数据:
孰优孰劣以下两种情况,同样取500000到500100中间的数据。
1、使用ROW_NUMBER()函数。
SQL语句如下:
2、使用TOP加NOT IN方法。
SQL语句如下:
好吧,一起执行看看结果:

或者你认为SQL存在缓存的问题,把两部分顺序对掉一下:

以上是百万数据量的对比,再看看1万条数据下的对比:

通过以上对比可以我们可以得到这样的结论:在小数据量下(一般应该认为是10万以下,TOP+NOT IN分页方式效率要比ROW_NUMBER()高;在大数据量下(百万级)ROW_NUMBER()分页方式效率要更高一些。