SQL Server常用的数据库分页方法

作者:翅膀的初衷 来源:本站原创 发布时间:2014-04-10 查看数:61434

数据分页是讨论比较广泛的一个基础性问题,特别是数据量比较大的情况下,本文列举SQL Server中几种常见的分页方法:

1.top......not top in

这是一个在很多年前,别特是SQL2000盛行的时候很流行的分页方法,当然,现在还在使用,使用示例:

select top 10 * from t_news where id not top in (select top 20 id from t_news)

点评:很经典的分页方法,通用性比较好!

2.row_number() over

row_number是SQL2005新增的内容,必须是SQL2005及以上版本才支持,使用示例:

select * from (
    select * from row_number() over(order by id desc) as n,* from t_news
) where n >=30 and n<40

点评:如果是数据库不是2000,推荐使用此方法替代top......not top in

3.判断主键大小来分页

这种分页最理想的情况是主键为数字类型且使用主键顺序或者倒序,另外上一页,下一页也可以使用本方法,使用示例:

select top 10 * from t_news where id>11024

或者

select top 10 * from t_news where id>(select max(id) from (select top 20 id from t_news) t)

点评:效率不错,不过局限性比较多,比如如果需要自定义排序......!

另外如果是mysql或者sqlite还可以使用limit