SQL Server 2008的分页方法?

2023-12-28

我必须处理可能很大的记录列表,并且我一直在谷歌搜索避免选择整个列表的方法,相反,我想让用户选择一个页面(例如从 1 到 10)并相应地显示记录。

比如说,对于 1000 条记录,我将有 100 页,每页 10 条记录,并且将首先显示最近的 10 条记录,然后如果用户单击第 5 页,它将显示从 41 到 50 的记录。

为每条记录添加行号然后根据行号进行查询是一个好主意吗?有没有更好的方法来实现分页结果而不需要太多开销? 到目前为止,这里描述的这些方法看起来最有前途:

http://www.codeproject.com/KB/aspnet/PagingLarge.aspx http://www.codeproject.com/KB/aspnet/PagingLarge.aspx


以下 T-SQL 存储过程是very高效实现分页。 SQL优化器可以非常快地找到第一个ID。将此与 ROWCOUNT 的使用结合起来,您将获得一种既具有 CPU 效率又具有读取效率的方法。对于具有大量行的表,它肯定胜过我见过的使用临时表或表变量的任何方法。

注意:我在本例中使用了顺序标识列,但代码适用于任何适合页面排序的列。此外,所使用的列中的序列中断不会影响结果,因为代码选择了许多行而不是列值。

编辑:如果您要对具有潜在非唯一值(例如 LastName)的列进行排序,则将第二列添加到 Order By 子句以使排序值再次唯一。

CREATE  PROCEDURE dbo.PagingTest
(
    @PageNumber int,
    @PageSize int
)
AS

DECLARE @FirstId int, @FirstRow int

SET @FirstRow = ( (@PageNumber - 1) * @PageSize ) + 1
SET ROWCOUNT @FirstRow

-- Add check here to ensure that @FirstRow is not
-- greater than the number of rows in the table.

SELECT   @FirstId = [Id]
FROM     dbo.TestTable
ORDER BY [Id]

SET ROWCOUNT @PageSize

SELECT   *
FROM     dbo.TestTable
WHERE    [Id] >= @FirstId
ORDER BY [Id]

SET ROWCOUNT 0
GO 
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

SQL Server 2008的分页方法? 的相关文章

  • 在 SQL Server 中选择条件的值[重复]

    这个问题在这里已经有答案了 在查询选择中 我想显示字段是否满足条件的结果 想象一下我有一张名为stock 该表有一列告诉我库存中每种商品的数量 我想做的是这样的 SELECT stock name IF stock quantity lt
  • 在 Oracle 中创建数据库链接时出错

    我有两个数据库 需要编写跨数据库查询 所以我试图创建一个数据库链接 CREATE PUBLIC DATABASE LINK DBLink CONNECT TO SchemaName IDENTIFIED BY 123 using DBNam
  • 在tomcat中显示Spring-security的SQL错误

    我使用 spring security 框架创建了一个 Web 应用程序 我设置了一个数据库来存储用户及其角色 但 tomcat 给出以下错误 17 sep 2010 11 56 14 org springframework beans f
  • 在 Oracle SQL 中执行 MERGE 时,如何更新 SOURCE 中不匹配的行?

    我有一个main数据库和一个report数据库 我需要同步一个表main into report 但是 当项目在main数据库 我只想设置一个IsDeleted标志在report数据库 执行此操作的优雅方法是什么 我目前正在使用 MERGE
  • 在 C# 中多次使用单个参数的更好方法

    我刚开始使用准备好的语句从数据库查询数据 并且在实现 C 参数 特别是 OracleParameters 时遇到问题 假设我有以下 SQL string sql select from table1 t1 table2 t2 where t
  • 产品和变体 - 设计数据库的最佳方法

    描述 商店可以有产品 鞋子 T 恤等 每个产品可以有许多变体 每个变体可以有不同的价格和库存 例如T 恤有不同的颜色和尺寸 颜色 蓝色 尺寸 L 价格 10 美元 库存 5 颜色 蓝色 尺寸 XL 价格 10 美元 库存 10 颜色 白色
  • VBA仅清除数据透视表缓存,但保留数据透视表结构

    如何使用VBA清除数据透视表缓存 但不破坏数据透视表结构 我的数据透视表已连接到外部数据源 SQL 源决定哪个用户应该查看数据的哪一部分 当表刷新时 源会填充该表 我想保存 Excel 文件并使用干净的数据透视表 内部没有数据 分发它 结果
  • 查找给定表的哪些行被锁定以及谁在 SQL Server 中锁定这些行

    有没有办法找出 SQL Server 2008 中特定表的哪些行被锁定 我还想知道锁定它们的用户 sys dm tran locks http msdn microsoft com en us library ms190345 aspx 正
  • 规范“毒”方式真的值得吗? (3NF)

    我正处于数据库设计的早期阶段 所以还没有最终的结果 并且我正在为具有可选标签的线程使用 TOXI 3表设计 但我忍不住觉得加入是并不是真的必要 也许我只需要依赖我的简单标签列posts我可以在其中存储类似 varchar 的表
  • 删除重复的 SQL 记录以允许唯一键

    我在 MYSQL 数据库中有一个表 销售 该表理应强制执行唯一约束以防止重复 事实证明 首先删除欺骗并设置约束有点棘手 表结构 简化 id 唯一 autoinc 产品编号 目标是强制product id 的唯一性 我想要应用的重复数据删除策
  • PHP 中的 SQL 语句与 phpmyadmin 中的 SQL 语句的行为不同

    I have form store sql INSERT INTO myodyssey myaccount id email username password VALUES NULL email unixmiah formtest woo
  • 双端队列与队列速度

    我正在研究 LeetCode 上的一个问题 Here https leetcode com problems moving average from data stream 当我完成这个问题后 我想出了 class MovingAverag
  • C# 的快速线程安全随机数生成器

    我需要在多个正在运行的线程中快速生成随机浮点数 我尝试过使用System Random 但它对于我的需求来说太慢了 并且它在多个线程中返回相同的数字 当我在单线程中运行应用程序时 它工作正常 此外 我需要确保生成的数字在 0 到 100 之
  • 如何在Oracle数据库11g中创建新模式/新用户?

    我已经申请了一家公司的实习机会 作为一个问题 他们要求我为他们的公司创建一个具有一定要求的架构 并将DDL文件 我已经安装了 Oracle 数据库 11g Express 版本 但如何在 Oracle 数据库 11g 中创建新架构 我在网上
  • 如何更改 Amazon Redshift 中的默认时区?

    默认情况下将时间戳列设置为 SYSDATE 将其存储为UTC 是否可以更改时区 以便 SYSDATE 将日期和时间存储到不同的时区 到目前为止 我已经检查了SET http docs aws amazon com redshift late
  • 无法使用 django-mssql 提供程序

    有谁知道如何使用 django mssql 提供程序 我已经安装了要求 但无法让它工作 如果 settings py 中没有 sqlserver ado 它可以正常导入 testenv C Users Robin test gt pytho
  • 安全转义表名/列名

    我在 php 中使用 PDO 因此无法使用准备好的语句转义表名或列名 以下是我自己实现它的万无一失的方法 tn str replace REQUEST tn column str replace REQUEST column sql SEL
  • c++11 正则表达式比 python 慢

    嗨我想了解为什么以下代码使用正则表达式进行分割字符串分割 include
  • 在单个查询中设置和选择?

    我想知道是否可以在单个查询中设置和选择 像这样的事情 SET LOCAL search path TO 1 SET LOCAL ROLE user SELECT from posts 你可以这样做 with some set as sele
  • 如果不存在则插入数据(来自 2 个表),否则更新

    再会 我有3张桌子 tbl仓库产品 ProductID ProductName ProductCode Quantity tbl分公司产品 ProductID ProductCode ProductCode Quantity Locatio

随机推荐

  • 如何在 Windows 10 Powershell 上使用 npm 脚本递归复制整个目录?

    如何在 Windows 10 Powershell 上使用 npm 脚本递归复制整个目录 现在我有以下树 test 1 package json 2 src asd txt asd asd Copy 2 txt asd Copy txt a
  • 如何从通过 Javascript 加载的页面上 __scrape__ 数据

    我想使用 beautifulsoup 刮掉此页面上的评论 https www x s com video id the suburl 评论通过 JavaScript 在点击时加载 评论是分页的 每个页面也会在点击时加载评论 我希望获取所有评
  • Eclipse 的选项卡双击 Visual Studio?

    在 Eclipse 上 每当我双击选项卡时 它就会填充工作区 通过隐藏所有其他视图 如项目树 控制台等 有没有办法在 Visual Studio 上做到这一点 注意 我不是在寻找全屏 只是想要一种整理工作区但仍然可以访问菜单的方法 你在追寻
  • 训练过程中GAN结果图像是相同的

    我正在尝试在 MNIST 数据集上训练 GAN 该代码现在的训练结果好坏参半 问题似乎是生成的图像实际上都是相同的 您可以在下面找到我的完整代码 我尝试环顾四周 看看是否有解决方案 我发现唯一提到的使用randn代替rand但我没有使用ra
  • Summernote 显示已上传到文件夹的图像

    我正在使用非常好的 Summernote 编辑器来构建一个小型网络应用程序 我没有使用图像的默认内联 base64 代码 而是将图像存储在文件夹中 我让那部分按预期工作 我可以单击 图像 图标并选择一个图像 它会以其原始类型 jpg png
  • 如何在网站上嵌入Python解释器

    我正在尝试建立一个教育编码网站 类似于代码学院 http www codecademy com 但坦率地说 我不知道应该采取什么步骤 我能否指出正确的方向 在 web 应用程序中包含一个简单的 python 解释器 一种选择可能是使用 Py
  • 调试时模拟 argparse 命令行参数输入

    该线程是上一个线程的扩展 可以找到here https stackoverflow com questions 50881403 debugging argpars in python 比如说 我有一个代码有两个用途 1 从整数列表中打印最
  • 对未经身份验证的用户和 AJAX 调用的不同响应

    我的 ASP MVC 1 0 网站有一个默认登录页面 基于 OpenId 但这不应该有什么不同 当 AuthorizedAttribute 位于操作 控制器上时 它可以正常工作 不过 我也收到了 AJAX 请求 以下是我对它们所做的事情 i
  • 设置 IPython Notebook 内联图背景不透明

    在 IPython Notebook 3 中 当我使用Inlinematplotlib后端 浏览器中的png图形具有透明背景 我该如何将其设置为白色 最小的例子 matplotlib inline import matplotlib pyp
  • Apache 虚拟主机(子域)访问 LAN 上的不同计算机

    我目前正在尝试配置 Apache HTTP Server 的虚拟主机 子域 以便可以通过 LAN 上的另一台计算机访问它 Apache 与 PHP 和 MySQL 的当前设置在同一台物理机器上本地运行 因此 我有两个虚拟主机设置 开发和 c
  • 根据自定义产品属性值过滤 Woocommerce 产品

    在 Woocommerce 中 我有一个名为restriction id 我想根据某些条件过滤产品限制 ID 例如 如果一个值设置为35在 php 会话变量中 我想过滤掉任何将restriction id 属性设置为的产品35 我会在这里放
  • WPF 和 WinForms 有什么区别?

    我正在编写简单的 Windows 应用程序 我不需要数据库支持 为什么我要使用 WPF 而不是 WinForms 一个明显的答案是 WPF 提供了比 WinForms 更丰富的用户体验 例如允许在用户界面中使用动画 甚至 3D 从开发的角度
  • “numpy.einsum”中的“out”参数无法按预期工作

    我有两段代码 第一个是 A np arange 3 4 3 reshape 3 4 3 P np arange 1 4 A 1 np einsum j ijk gt ijk P A 1 和结果A is array 0 1 2 6 8 10
  • 有人知道为什么 IE9 typeof console.log 报告“对象”,其他报告“功能”吗?

    在 Firefox Chrome 其他浏览器中 typeof console log 报告 function 在 IE9 中 假设开发者控制台已打开 从而定义了 window console 属性 如果在开发者控制台中显示变量 consol
  • 如何重构两个非常相似的方法

    我有以下课程 public interface IBaseInterface String baseMethod public class BaseClass implements IBaseInterface Override publi
  • 如何确定 CouchDB 中当前的活跃用户?

    是否可以使用 couchdb 查询当前活动会话 服务器能够根据超时值跟踪会话 那么我如何确定哪些用户有活动会话 CouchDB 对活动会话一无所知 这些 会话 实际上是基于 HTTP Cookie 的holds https github c
  • jQuery/JavaScript 选择器或 || [复制]

    这个问题在这里已经有答案了 可能的重复 jQuery 多个值的属性选择器 https stackoverflow com questions 9005361 jquery attribute selector for multiple va
  • 使用兼容IE7/8的jquery旋转图像

    我尝试了很多方法 插件 最吸引我的是jquery 旋转 http code google com p jqueryrotate 但是 它在 Internet Explorer 7 和 8 中不起作用 至少对我来说 图像就消失了 我的目标是悬
  • 如何防止 Safari Mobile (iPad) 上的滚动滞后?

    我有一个简单的 html5 页面 里面有 3 个 div 如果我只允许第三个 div 滚动 我会遇到一些严重的滞后 并且触摸响应能力很奇怪 有任何想法吗 div BLA1 div div BLA2 div div BLA3 overflow
  • SQL Server 2008的分页方法?

    我必须处理可能很大的记录列表 并且我一直在谷歌搜索避免选择整个列表的方法 相反 我想让用户选择一个页面 例如从 1 到 10 并相应地显示记录 比如说 对于 1000 条记录 我将有 100 页 每页 10 条记录 并且将首先显示最近的 1