菜单

sql 2000/2005几种分页方法

2020年3月13日 - 计算机数据

因此SQL
查询剖析器,展现比较:作者的结论是:分页方案二:(利用ID大于多少和SELECT
TOP分页)效用最高,需求拼接SQL语句分页方案一:(利用Not In和SELECT
TOP分页State of Qatar功用次之,要求拼接SQL语句分页方案三:(利用SQL的游标存款和储蓄进程分页卡塔尔(قطر‎效能最差,不过最为通用

若是未有主键,能够用不常表,也能够用方案三做,不过功能会低。提议优化的时候,加上主键和目录,查询效用会提升。

通过SQL
查询剖判器,展现比较:我的结论是:分页方案二:(利用ID大于多少和SELECT
TOP分页)功效最高,供给拼接SQL语句分页方案一:(利用Not In和SELECT
TOP分页卡塔尔(قطر‎功用次之,供给拼接SQL语句分页方案三:(利用SQL的游标存款和储蓄进度分页卡塔尔(قطر‎效率最差,可是最棒通用

1.一旦有叁个自动增加的id字段,则:

概念二个变量:Page,PageCount

Select top PageCount * From [tb_code] Where id=(select min(id)
from (select top (Page-1)*PageCount+1 id from [tb_code] order by
id desc) as t) order by id desc

规律,依照ID总计出(Page-1State of Qatar页的渺小值,然后用TOP关键字及可解决难点。

2.SELECT TOP 10 id,username From [tb_code] where id not in ( SELECT
TOP 20000 id FROM tb_code ORDER BY username)

可取:此方法能够根据表中的任二个字段排序,在二个表中有几百万条记下时,仍有相当高的频率,劣点是在大数据量的景况下功能略逊于第一种

3.SELECT TOP 10 id,username From (SELECT TOP page*pagecount id,
username FROM tb_code ORDER BY username) DERIVEDTBL ORDER BY username
DESC

亮点:此方式能够借助表中的任三个字段排序. 短处是功效最低

在SQL Server 2005中使用rownum分页

举例说要从表USEEnclave中查看第10到第20条之间的多寡,那么SQL是那样达成的

SELECT * FROM (SELECT rownum rowcount,USER.* FROM USER) WHERE
ROWCOUNT =10 AND ROWCOUNT 20

有关分页 SQL
的材质比非常多,有的使用存款和储蓄进度,有的利用游标。自己不希罕使用游标,小编以为它耗费资金、效能低;使用存储进度是个不错的选拔,因为存款和储蓄进度是透过预编写翻译的,施行效用高,也越来越灵敏。先看看单条
SQL 语句的分页 SQL 吧。

方法1:适用于 SQL Server 2000/2005

SELECT TOP 页大小 *FROM table1WHERE id NOT IN ( SELECT TOP
页大小*(页数-1) id FROM table1 ORDER BY id )ORDER BY id

方法2:适用于 SQL Server 2000/2005SELECT TOP 页大小 *

FROM table1WHERE 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 ) AWHERE RowNumber 页大小*(页数-1)

申明,页大小:每页的行数;页数:第几页。使用时,请把页大小和页大小*(页数-1卡塔尔国替换到数字

相关文章

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图