当前位置: 首页 > 图文教程 > 数据库 > MSSQL > TOP N 和SET ROWCOUNT N 哪个更快?

MSSQL
用SQL创建数据库
无法用TCP/IP协议连接远端SQL Server数据库问题
SQL Server中各个系统表的作用
SQL中的五种数据类型
使用Sql server进行分布式查询
使用sql server中的全文索引
T-SQL 查询中使用的函数之系统函数
SQL 的一些核心语句
缩小SQL Server数据库日志
怎样配置SQL Server发送电子邮件
无数据库日志文件恢复数据库方法两则(1)
无数据库日志文件恢复数据库方法两则(2)
恢复SQL Server系统数据库
利用事务日志来恢复Update、Delete误操作引起的数据丢失
问:如何将 XML 文件导入 SQL Server 2000?
关于SQL Server中几个未公布的访问注册表的扩展存储过程
SQL Server安全规划全攻略
SQL注入漏洞全接触--入门篇(一)
SQL注入漏洞全接触--入门篇(二)
SQL注入漏洞全接触--进阶篇(一)

MSSQL 中的 TOP N 和SET ROWCOUNT N 哪个更快?


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

  懒得翻译了,大意:
在有合适的索引的时候,Top n和set rowcount n是一样快的。但是对于一个无序堆来说,top n更快。
原理自己看英文去。

Q. Is using the TOP N clause faster than using SET ROWCOUNT N to return a specific number of rows from a query?

A. With proper indexes, the TOP N clause and SET ROWCOUNT N statement are equally fast, but with unsorted input from a heap, TOP N is faster. With unsorted input, the TOP N operator uses a small internal sorted temporary table in which it replaces only the last row. If the input is nearly sorted, the TOP N engine must delete or insert the last row only a few times. Nearly sorted means you're dealing with a heap with ordered inserts for the initial population and without many updates, deletes, forwarding pointers, and so on afterward.

A nearly sorted heap is more efficient to sort than sorting a huge table. In a test that used TOP N to sort a table with the same number of rows but with unordered inserts, TOP N was not as efficient anymore. Usually, the I/O time is the same both with an index and without; however, without an index SQL Server must do a complete table scan. Processor time and elapsed time show the efficiency of the nearly sorted heap. The I/O time is the same because SQL Server must read all the rows either way.