gpt4 book ai didi

sql-server-2005 - 在 SQL Server 2005 中对非常大的结果集进行分页的有效方法是什么?

转载 作者:行者123 更新时间:2023-12-04 07:01:25 24 4
gpt4 key购买 nike

编辑:我还在等待更多的答案。谢谢!

在 SQL 2000 的日子里,我曾经使用临时表方法,你用新的标识列和主键创建一个临时表,然后选择 A 和 B 之间的标识列。

SQL 2005 我发现了 Row_Number()从那以后我一直在使用它......

但是现在,我发现 Row_Number() 存在严重的性能问题。 .
当您处理不那么庞大的结果集并对标识列进行排序时,它的性能非常好。然而,它的性能很差 当您与 一起工作时大型结果集 像超过 10,000 条记录和 对非标识列进行排序 . Row_Number()如果结果集超过 250,000 条记录,即使按标识列排序,性能也会很差。对我来说,它到了抛出错误的地步,“ 命令超时!

你用什么在 SQL 2005 上对大型结果集进行分页?
在这种情况下,临时表方法仍然更好吗?我不确定这种方法是否using temp table with SET ROWCOUNT会表现得更好......但有人说如果你有多列主键,就会出现给出错误行号的问题。

就我而言,我需要能够按日期类型列对结果集进行排序......对于我的生产网络应用程序。

让我知道您的用途 SQL 2005 中的高性能分页 .而且我还想知道一种创建索引的聪明方法。 我怀疑选择正确的主键和/或索引(集群/非集群)将在这里发挥重要作用。

提前致谢。

附言有谁知道stackoverflow使用什么?

编辑:我的看起来像...

SELECT postID, postTitle, postDate
FROM
(SELECT postID, postTitle, postDate,
ROW_NUMBER() OVER(ORDER BY postDate DESC, postID DESC) as RowNum
FROM MyTable
) as DerivedMyTable
WHERE RowNum BETWEEN @startRowIndex AND (@startRowIndex + @maximumRows) - 1

postID:Int、Identity(自增)、主键

发布日期:日期时间

编辑:每个人都在使用 Row_Number() 吗?

最佳答案

row_number() 技术应该很快。我已经看到 100,000 行的良好结果。

您是否使用类似于以下内容的 row_number():

SELECT column_list
FROM
(SELECT column_list
ROW_NUMBER() OVER(ORDER BY OrderByColumnName) as RowNum
FROM MyTable m
) as DerivedTableName
WHERE RowNum BETWEEN @startRowIndex AND (@startRowIndex + @maximumRows) - 1

...你有 column_list 的覆盖索引和/或 'OrderByColumnName' 列的索引吗?

关于sql-server-2005 - 在 SQL Server 2005 中对非常大的结果集进行分页的有效方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/169596/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com