加入收藏 | 设为首页 | 会员中心 | 我要投稿 湖南网 (https://www.hunanwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程 > 正文

sql-server-2005 – 在SQL Server 2005中分析非常大的结果集的有

发布时间:2021-04-01 16:49:28 所属栏目:编程 来源:网络整理
导读:编辑:我还在守候更多谜底.感谢! 在SQL 2000天,我曾经行使姑且表要领,您在个中建设具有新标识列和主键的姑且表,然后选择A和B之间的标识列. 当SQL 2005呈现时,我发明白Row_Number(),从那往后我一向在行使它… 但此刻,我发明Row_Number()存在严峻的机能题目.

编辑:我还在守候更多谜底.感谢!

在SQL 2000天,我曾经行使姑且表要领,您在个中建设具有新标识列和主键的姑且表,然后选择A和B之间的标识列.

当SQL 2005呈现时,我发明白Row_Number(),从那往后我一向在行使它…

但此刻,我发明Row_Number()存在严峻的机能题目.
当您行使不那么庞大的功效集并对标识罗列办排序时,它的机能很是好.可是,当您处理赏罚高出10,000笔记录的大型功效集并将其排序到非标识列时,它的机能很是差.假如功效集高出250,000笔记录,则纵然按标识列排序,Row_Number()也示意不佳.对我来说,它溘然呈现错误,“呼吁超时!”

您在SQL 2005上行使什么分页大型功效集?
在这种环境下,姑且表要领照旧更好吗?我不确定这个要领using temp table with SET ROWCOUNT是否会示意得更好……可是有人说假如你有多列主键,就会呈现错误行号的题目.

就我而言,我必要可以或许按日期范例列对功效集举办排序…对付我的出产Web应用措施.

让我知道你在SQL 2005顶用于高机能分页的内容.我也想知道一种建设索引的智慧要领.我猜疑选择正确的主键和/或索引(聚集/非聚集)将在这里施展重要浸染.

提前叩谢.

附:有谁知道stackoverflow行使什么?

编辑:我看起来像……

SELECT postID,postTitle,postDate
FROM
   (SELECT postID,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(自动增量),主键

postDate:DateTime

编辑:每小我私人都行使Row_Number()?

办理要领

好吧,对付您的示例查询,假如您在PostDate字段上有索引,则ROW_COUNT应该很是快,稀有千行.假如不这样做,处事器必要在PK上执行完备的聚簇索引扫描,现实上加载每个页面,获取PostDate字段,按其排序,确定要为功效集提取的行,然后再次获取这些行.它是一种一遍又一各处建设姑且索引(你也许会在平凡中看到一个表/索引假脱机).

难怪你获得超时.

我的提议:在PostDate DESC上配置一个索引,这是ROW_NUMBER将要颠末的 – (ORDER BY PostDate DESC,…)

至于你所指的那篇文章 – 我已往做了许多分页和SQL Server 2000的对象而没有ROW_COUNT,文章中行使的要领是最有用的要领.它并不合用于全部环境(您必要独一或险些独一的值).其他一些要领的概述是here.

.

(编辑:湖南网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读