当前位置: 首页 > 图文教程 > 数据库 > MSSQL > TOPN 子句与SET ROWCOUNTN 之对比

MSSQL
SQL Server SA权限总结经典技术
ASP数据库编程SQL常用技巧
SQL SERVER数据库开发之存储过程应用
SQL Server 2000的安全配置
MSSQL经典语句
SQL 经典语句
有用的SQL语句(删除重复记录,收缩日志)
Access 数据类型与 MS SQL 数据类型的相应
SQL语句示例
SQL数据类型详解
将Sql Server对象的当前拥有者更改成目标拥有者
MSSQL内外连接(INNER JOIN)语句详解
SQL 外链接操作小结 inner join left join right join
SQL Server中网络备份一例
SQL语句导入导出大全
SQL 新增/修改 表字段列的类型等
系统存储过程,sp_executesql
sql2005开启xp_cmdshell
实例学习SQL的Select命令
删除数据库中重复数据的几个方法

MSSQL 中的 TOPN 子句与SET ROWCOUNTN 之对比


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-10-30   浏览: 92 ::
收藏到网摘: n/a

 

问:为了从查询中返回指定数量的行,使用 TOPN 子句比使用SET ROWCOUNTN 语句要快吗?

答:在正确进行了索引的情况下,TOP N 子句和SET ROWCOUNT N 语句是一样快的,但是如果数据未经过排序,TOP N 要快一些。在输入未排序的情况下,TOP N 操作时使用一个经过排序的小的中间临时表,而且操作时仅仅替换该表的最后一行。如果输入是近似排序的,TOP N 引擎必须删除或插入最后行,但只需几次操作即可。近似排序意味着您正在处理的堆集在初始构建时可进行有序的插入操作,并且不需要进行很多的更新、删除、向前移动指针等操作。

排序一个近似排序的堆集比排序一个巨大的表要更有效率。在一次测试中,使用TOP N 来对一个由无序插入操作构建的并且含有同样的行数的表进行排序,发现TOP N 的效率也不高。通常,在进行过索引和未进行过索引的情况下,I/O时间都是一样的;但是如果没有进行过索引,SQL Server 必须要进行一次全表扫描。处理器时间和实耗时间说明近似排序的堆集要更有效率一些。但I/O时间是相同的,因为不管怎样SQL Server都要读取所有的行。