SQL语句分页查询,一页面多少数据合适

SQL语句分页查询,一页面多少数据合适,第1张

2万条。

在SQLServer中通过SQL语句实现分页查询,在SQLServer中通过SQL语句实现分页后插入数据2万条,用更多的数据测试会明显一些。微软的SQLSERVER提供了两种索引:聚集索引,也称聚类索引、簇集索引和非聚集索引,也称非聚类索引、非簇集索引。

建立一个web应用,分页浏览功能必不可少。这个问题是数据库处理中十分常见的问题。经典的数据分页方法是:ADO纪录集分页法,也就是利用ADO自带的分页功能(利用游标)来实现分页。但这种分页方法仅适用于较小数据量的情形,因为游标本身有缺点:游标是存放在内存中,很费内存。游标一建立,就将相关的记录锁住,直到取消游标。游标提供了对特定集合中逐行扫描的手段,一般使用游标来逐行遍历数据,根据取出数据条件的不同进行不同的 *** 作。而对于多表和大表中定义的游标(大的数据集合)循环很容易使程序进入一个漫长的等待甚至死机。更重要的是,对于非常大的数据模型而言,分页检索时,如果按照传统的每次都加载整个数据源的方法是非常浪费资源的。现在流行的分页方法一般是检索页面大小的块区的数据,而非检索所有的数据,然后单步执行当前行。最早较好地实现这种根据页面大小和页码来提取数据的方法大概就是“俄罗斯存储过程”。这个存储过程用了游标,由于游标的局限性,所以这个方法并没有得到大家的普遍认可,后来,网上有人改造了此存储过程,实现了分页储存。

只能做一个嵌套,按照你的,我建了几个表和查询,你看看,符合你要求不

建表

create table a (id int,

name varchar(10));

create table b (

name varchar(10),

qty int);

插入数据

insert into a values (1,'张三')

insert into a values (2,'李四')

insert into a values (3,'王五')

insert into a values (4,'赵六')

insert into a values (5,'孙七')

insert into b values ('张三',100)

insert into b values ('张三',200)

insert into b values ('李四',500)

insert into b values ('王五',100)

insert into b values ('王五',200)

insert into b values ('王五',500)

运行语句

select tname,tqty,row_number() over (order by tqty)

from

(select aname,sum(bqty) qty  

from a left join b on aname=bname group by aname) t

结果截图

四种方式实现SQLServer 分页查询

>

oracle 的话可以用 rownum

select from ( 你的语句 ) where rownum <11

select from ( 你的语句 ) where rownum >10 and rownum < 21

sqlserver的话用 ROW_NUMBER()

四种方式实现SQLServer

分页查询

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

40

id

from

test

order

by

id

)

order

by

id

原理:需要拿出数据库的第5页,就是40-50条记录。首先拿出数据库中的前40条记录的id值,然后再拿出剩余部分的前10条元素

第二种方法:

还是以上面的结果为例,采用另外的一种方法

--数据的意思和上面提及的一样

select

top

10

from

test

where

id

>

(

select

isnull(max(id),0)

from

(

select

top

40

id

from

test

order

by

id

)

A

)

order

by

id

原理:先查询前40条记录,然后获得其最id值,如果id值为null的,那么就返回0

然后查询id值大于前40条记录的最大id值的记录。

这个查询有一个条件,就是id必须是int类型的。

第三种方法:

select

top

10

from

(

select

row_number()

over(order

by

id)

as

rownumber,

from

test

)

A

where

rownumber

>

40

原理:先把表中的所有数据都按照一个rowNumber进行排序,然后查询rownuber大于40的前十条记录

这种方法和oracle中的一种分页方式类似,不过只支持2005版本以上的

第四种:

存储过程查询

创建存储过程

alter

procedure

pageDemo

@pageSize

int,

@page

int

AS

declare

@temp

int

set

@temp=@pageSize(@page

-

1)

begin

select

top

(select

@pageSize)

from

test

where

id

not

in

(select

top

(select

@temp)

id

from

test)

order

by

id

end

执行存储过程

exec

10,5

以上就是关于SQL语句分页查询,一页面多少数据合适全部的内容,包括:SQL语句分页查询,一页面多少数据合适、sqlserver 使用 ROW_NUMBER() OVER(order by xxx)进行分页查询、sql server数据库分页怎么写等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/9785167.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-02
下一篇 2023-05-02

发表评论

登录后才能评论

评论列表(0条)

保存