SQL分页语句
有关分页 SQL 的资料很多,有的使用存储过程,有的使用游标。本人不喜欢使用游标,我觉得它耗资、效率低;使用存储过程是个不错的选择,因为存储过程是经过预编译的,执行效率高,也更灵活。先看看单条 SQL 语句的分页 SQL 吧。
方法1:
适用于 SQL Server 2000/2005
SELECT TOP 页大小 *
FROM table1
WHERE id NOT IN
(
SELECT TOP 页大小*(页数-1) id FROM table1 ORDER BY id
)
ORDER BY id
方法2:
适用于 SQL Server 2000/2005
SELECT TOP 页大小 *
FROM table1
WHERE id >
(
SELECT ISNULL(MAX(id),0)
FROM
(
SELECT TOP 页大小*(页数-1) id FROM table1 ORDER BY id
) A
)
ORDER BY id
方法3:
适用于 SQL Server 2005
SELECT TOP 页大小 *
FROM
(
SELECT ROW_NUMBER() OVER (ORDER BY id) AS RowNumber,* FROM table1
) A
WHERE RowNumber > 页大小*(页数-1)
说明,页大小:每页的行数;页数:第几页。使用时,请把“页大小”和“页大小*(页数-1)”替换成数字。
其它的方案:如果没有主键,可以用临时表,也可以用方案三做,但是效率会低。
建议优化的时候,加上主键和索引,查询效率会提高。
通过SQL 查询分析器,显示比较:我的结论是:
分页方案二:(利用ID大于多少和SELECT TOP分页)效率最高,需要拼接SQL语句
分页方案一:(利用Not In和SELECT TOP分页) 效率次之,需要拼接SQL语句
分页方案三:(利用SQL的游标存储过程分页) 效率最差,但是最为通用
分享到:
相关推荐
sqlserver分页查询语句;sqlserver分页查询语句;sqlserver分页查询语句;
关于SQL Server SQL语句查询分页数据的解决方案
SQL server2008中通用分页存储过程,表名,每页长度,页码都是动态赋值。
SqlServer数据库中的分页语句,SqlServer分页SQL语句特点:一次查询,数据库只返回一页的数据。而不是取出所有的数据。
用SQL实现分页显示
sql server2005 分页查询语句
sql server 分页大全, 分页存储过程,分页TSQL , 分页语法,语句! 最全的SQL Server2000 分页方法。 可放心下载
简易的sqlserver分页功能,只需要将页码传入即可,默认id倒序排列,一页十条,也可以通过传入不同参数,对不同字段,进行正序或倒序排列。 使用方法:1、将该类导入实体类包中 2、在需要分页的地方创建该类对象,并...
NULL 博文链接:https://baobeituping.iteye.com/blog/2159496
sql server数据库中分页的存储过程,参数中比较灵活,如果首页传1,非首页传其他。
sqlserver 分页调用的存储过程 t-sql 语句
PagingOperation数据库SQLServer2008分页存储过程(和java调用存储过程源代码): 调用存储过程进行分页查询速度快,尤其是数据量超过50万条的表非常重要,此代码是我们项目中使用的,实际使用情况稳定,也希望大家...
几条常见的数据库分页SQL 语句,针对oracle,sqlserver,mysql三种常见数据库的分页显示。
SQL分页语句 有关分页 SQL 的资料很多,有的使用存储过程,有的使用游标。本人不喜欢使用游标,我觉得它耗资、效率低;使用存储过程是个不错的选择,因为存储过程是经过预编译的,执行效率高,也更灵活。先看看单条 ...
1.只需要提供Sql语句和每页的记录数,页数就可以了 2,速度超快哟,100W记录1~3秒就分出来了 3,对于存储过程特别好用
SQL Server 存储过程及Oracle SQL语句分页
在sqlserver数据库中,本例采用TOP语句分页,100W条数据为例,效率还不错,有测试的屏幕录像程序,有相关代码。
用SQL语句实现分页(Oracle版Sql Server版)
前言 在实际开发过程中,当数据量比较多的时候,大量的数据一下子展示到页面上是非常不可取的。所以我们通常要进行分页(这里的分页是指真分页),而不是前端JS...一、三种分页SQL语句的介绍和写法 示例数据库的字段:
SQL Server 获取数据的总记录数,有两种方式: 1.先分页获取数据,然后再查询一遍数据库获取到总数量 2.使用count(1) over()获取总记录数量 SELECT * FROM ( SELECT ROW_NUMBER() OVER(ORDER BY Id DESC) rn, ...