当前位置: 首页 > 面试题库 >

在SQL Server中分页结果的最佳方法是什么

乌鸿宝
2023-03-14
问题内容

如果您还希望获得结果总数(在进行分页之前),那么在SQL Server
2000、2005、2008、2012中对结果进行分页的最佳方法(从性能角度而言)是什么?


问题答案:

获取结果总数和分页是两个不同的操作。为了这个示例,我们假设您要处理的查询是

SELECT * FROM Orders WHERE OrderDate >= '1980-01-01' ORDER BY OrderDate

在这种情况下,您可以使用以下方法确定结果总数:

SELECT COUNT(*) FROM Orders WHERE OrderDate >= '1980-01-01'

…这看似效率低下,但假设所有索引等均已正确设置,实际上却表现不错。

接下来,要以分页的方式获取实际结果,以下查询将是最有效的:

SELECT  *
FROM    ( SELECT    ROW_NUMBER() OVER ( ORDER BY OrderDate ) AS RowNum, *
          FROM      Orders
          WHERE     OrderDate >= '1980-01-01'
        ) AS RowConstrainedResult
WHERE   RowNum >= 1
    AND RowNum < 20
ORDER BY RowNum

这将返回原始查询的第1-19行。这里最酷的事情是,尤其是对于Web应用程序,您无需保留任何状态,除了要返回的行号。



 类似资料:
  • 问题内容: 所以我有一个JSON文件,该文件被解析为Javascript中的对象。我知道你在想什么:幸运的家伙。JSON本质上是一棵大树形式的流程图。这只是我要实现的目标的一个小示例: 因此,在此示例中,我将深入研究第二个分支(在其中显示),并且希望能够跳转到包含的分支。记住这是JSON,因此它必须是一个字符串(除非有本地链接?!在那儿?),但我不知道如何最好地格式化它。 如我所见,我至少有两个选

  • 问题内容: 我有mongodb和NodeJs。通过mongoosejs完成连接。 开发Ajax Infinity滚动的最佳方法是什么?我应该使用极限和偏移量吗? 问题答案: 当您对数据集进行分页时,“跳过并限制”方法不是很有效。它实际上是Shlemiel Painter的算法 。 范围查询效率更高(当索引支持时)。例如,假设您正在显示推文。您的页面大小是20,您在第1000页上,并且想要加载第10

  • 本文向大家介绍sqlserver分页查询处理方法小结,包括了sqlserver分页查询处理方法小结的使用技巧和注意事项,需要的朋友参考一下 sqlserver2008不支持关键字limit ,所以它的分页sql查询语句将不能用MySQL的方式进行,幸好sqlserver2008提供了top,rownumber等关键字,这样就能通过这几个关键字实现分页。 下面是本人在网上查阅到的几种查询脚本的写法:

  • 问题内容: 简单的一个:如何在PHP中找到浮点数的小数部分?例如,如果我的值为1.25,我想返回0.25。 问题答案:

  • 问题内容: 在Clojure中制作 GUI的最佳方法是什么? 有一些功能性Swing或SWT包装器的示例吗?还是与JavaFX声明性GUI描述进行了某些集成,可以使用某些宏轻松地将它们包装到s表达式中? 有教程吗? 问题答案: 我会谦虚地建议跷跷板。 这是一个基于REPL的教程,假定您没有Java或Swing知识。 跷跷板很像@tomjen的建议。这是“你好,世界”: 这是@Abhijith和@d

  • 问题内容: 我正在寻找一种库/方法来解析比通用xml解析库具有更多html特定功能的html文件。 问题答案: 这是一个敏捷的HTML解析器,它构建了一个读/写DOM并支持纯XPATH或XSLT(您实际上不必了解XPATH或XSLT来使用它,不用担心…)。这是一个.NET代码库,可让您解析“网络外” HTML文件。该解析器对“真实世界”格式的HTML十分宽容。对象模型与提出System.Xml的对