sql-server-2005 – 在SQL Server 2005中分析非常大的结果集的有
编辑:我还在等待更多答案.谢谢! 在SQL 2000天,我曾经使用临时表方法,您在其中创建具有新标识列和主键的临时表,然后选择A和B之间的标识列. 当SQL 2005出现时,我发现了Row_Number(),从那以后我一直在使用它… 但现在,我发现Row_Number()存在严重的性能问题. 您在SQL 2005上使用什么分页大型结果集? 就我而言,我需要能够按日期类型列对结果集进行排序…对于我的生产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. . (编辑:丽水站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- sql-server – SQL Server如何确定缺失索引请求中的键列顺序
- SQL的truncate和delete的区别是什么?
- 如何在SQL中选择所有值并隐藏NULL值?
- 数据库设计 – 教授告诉我们将序列化的Java对象存储为blob而
- sqlserver 存储过程动态参数调用实现代码
- sql-server – 选择所有记录,如果存在连接,则连接表A,否则连
- sql – 修剪包含错误数据的列
- sql-server – 在Sql Server中,有没有办法检查选定的一组行
- sql-server-2008 – 查看SQL Server代理历史记录非常慢
- sql-server – SQL Server需要分区数据,但只有标准版