sql 分页查询

数据过多时sql中返回数据,开销大,用户还不一定会用到。这时使用sql分页查询,更具用户操作返回对应的数据就能极大程度提高效率。

分页有多种方法:top in、exist、row_number()等,在此只叙述相对高效的

max/top  分页方式

1.原始的

  select * from dbo.pagetest where id >(select max(id) from (select top(9900) id from dbo.pagetest order by id)a) order by id

2.封装存储过程

create Proc pageSeparate(
 @count int, -- 数据条数
 @tabName nvarchar(50), --表名
 @pageIndex int --区间 多少也开始查询
)
as
begin
 declare @sqlStr nvarchar(max)
 set @sqlStr = ‘select * from ‘[email protected]+‘ where id >(select max(id) from (select top(‘+cast((@pageIndex*@count)as nvarchar(20))+‘) id from ‘[email protected] +‘ order by id)a) order by id‘
 print @sqlStr
 exec(@sqlStr)
end

原文地址:https://www.cnblogs.com/Innocent-of-Dabber/p/8425623.html

时间: 2024-09-30 08:44:39

sql 分页查询的相关文章

SQL分页查询总结{转}

开发过程中经常遇到分页的需求,今天在此总结一下吧.简单说来方法有两种,一种在源上控制,一种在端上控制.源上控制把分页逻辑放在SQL层:端上控制一次性获取所有数据,把分页逻辑放在UI上(如GridView).显然,端上控制开发难度低,适于小规模数据,但数据量增大时性能和IO消耗无法接受:源上控制在性能和开发难度上较为平衡,适应大多数业务场景:除此之外,还可以根据客观情况(性能要求,源与端的资源占用等)在源和端之间加一层,应用特殊算法和技术进行处理.以下主要讨论源上,即SQL上的分页.分页的问题其实

SQL分页查询结果不一致

今天遇到了SQL分页查询结果不一致的情况,一看代码,原来是没加排序查询!!分页查询最好加排序,且以唯一性高的字段进行排序,如ID,时间等,以保持每页查询结果的准确! PS:又帮别人擦屁股!!

SQL分页查询,纯Top方式和row_number()解析函数的使用及区别

听同事分享几种数据库的分页查询,自己感觉,还是需要整理一下MS SqlSever的分页查询的. Sql Sever 2005之前版本: select top 页大小 * from 表名 where id not in ( select top 页大小*(查询第几页-1) id from 表名 order by id ) order by id 例如: select top 10 * --10 为页大小 from [TCCLine].[dbo].[CLine_CommonImage] where

【原创】SQL分页查询存储过程

1 ------------------------------------- 2 -----作者:张欣宇 3 -----时间:2013-06-28 4 -----简介:根据参数和条件分页查询 5 ------------------------------------- 6 Create proc [dbo].[Up_PagingQueryByParameter] 7 ( 8 ----- 表名或能查询到结果的SQL语句{SQL语句左右必须有括号例:(select * from tbl1)} 9

SQL分页查询的几种方式

需求:查询表dbo.Message,每页10条,查询第2页 1:TOP() SELECT TOP(20) * FROM dbo.Message WHERE Code NOT IN (SELECT TOP(10) Code FROM dbo.Message) 2:BETWEEN *  AND *  ,  Row_Number() OVER(ORDER BY *) AS rowNum SELECT *,ROW_NUMBER() OVER(ORDER BY Code) AS rowNum INTO #

SQL分页查询

SQLServer 的数据分页: 假设现在有这样的一张表: CREATE TABLE test ( id int primary key not null identity, names varchar(20) ) 然后向里面插入大约1000条数据,进行分页测试 假设页数是10,现在要拿出第5页的内容,查询语句如下: --10代表分页的大小 select top 10 * from test where id not in ( --40是这么计算出来的:10*(5-1) select top 4

SQL 分页查询的四种方法

方法一 假设现在有这样的一张表: CREATE TABLE test ( id int primary key not null identity, names varchar(20) ) 然后向里面插入大约100条数据,进行分页测试 假设页数是10,现在要拿出第5页的内容,查询语句如下: --10代表分页的大小 select top 10 * from test where id not in ( --40是这么计算出来的:10*(5-1) select top 40 id from test

sql 分页查询 (每次6行 )

--  对比 数据 是否 相同 select * from [dbo].[ProjecrInfo] where Project_state='已审核' -- 查询 已经 审核 有多少数据 -- 每次 按照 6行查询    第一个 6 是 每次 显示 6行数 据  可以改  成 你想 每次按照 几行查询    第二个 数字是 分页select top 6 * from ProjecrInfo where ProjectID not in (select top 12 ProjectID from

Sql 分页查询效率分析

选取了2中效率比较高的方式比较效率:row_Number() .offset fetch 表test中有1000条数据,2个字段:field1(int),field2(nvarchar) --1000条数据,查询500次第1-10行,39s --1000条数据,查询500次第500-550行,87s --1000条数据,查询500次第150-160行,88s DECLARE @uId int SET @uId=1 BEGIN while @uId<=500 BEGIN SELECT * FROM