|
|
1
66
假设您使用的是MSSQL 2012,则可以使用
对于Row_Number,您可以像以前那样使用窗口函数,但我建议您将客户端计算为(pagenumber*pagesize+resultsetRowNumber),因此,如果您在10个结果中的第5页,而在第三行,您将输出第53行。 当应用于一个约有200万个订单的订单表时,我发现以下内容: 快速版本 这只跑了不到一秒钟。它的好处是,您可以在公共表表达式中进行一次过滤,它既适用于分页过程,也适用于计数。当where子句中有许多谓词时,这会使事情变得简单。
慢速版本 这花了大约10秒,正是伯爵(*)造成了缓慢。我很惊讶这这么慢,但我怀疑这只是在计算每一行的总数。虽然很干净。
结论 我们以前经历过这个性能调优过程,实际上发现它取决于查询、使用的谓词和所涉及的索引。例如,在第二个视图中,我们引入了一个它chugged的视图,所以我们实际上查询了基表,然后连接了视图(包括基表),它实际上表现得很好。 我建议有几个直接的策略,并将它们应用于正在进行的高价值查询。 |
|
|
2
2
|
|
|
3
1
如果你事先计算一下呢?
另一种方法是计算
Return total records from SQL Server when using ROW_NUMBER UPD: 对于单个查询,请在上面的链接上查看marc_s的答案。
|
|
4
1
创建一个通用表表达式并编写如下逻辑
|
|
|
5
0
有很多方法可以实现分页:我希望这些信息对您和其他人有用。 示例1:使用offset fetch next子句。2005年推出
示例2:使用row_number()函数并在
我希望这些对所有人都有帮助 |
|
|
6
0
我不喜欢其他解决方案过于复杂,所以这是我的版本。 一次性执行三个select查询,并使用输出参数获取计数值。此查询返回总计数、筛选器计数和页面行。它支持对源数据进行排序、搜索和筛选。它易于阅读和修改。 假设您有两个具有一对多关系的表,项目及其价格会随着时间的推移而变化,因此示例查询不会太琐碎。
以下是查询:
您需要为查询提供以下参数:
您可以替换
如果网格必须支持按每列单独筛选数据,则可以替换
如果用户不搜索和过滤数据,而是只点击网格页面,则此查询根本不会更改,并且数据库服务器会非常快速地执行它。 |
|
|
sqlrobert · SQL-如何查找不包含特定字段值的一组记录 2 年前 |
|
|
Nick Fleetwood · 调度语法的LINQ查询 3 年前 |
|
|
Mateen Bagheri · 选择表的计数并选择其自身 3 年前 |
|
Java · 使用交叉应用同时显示两列 3 年前 |