2

我想知道这个查询是如何执行的:

SELECT TOP 10 * FROM aSybaseTable
WHERE aCondition

事实是这个查询花费了太多时间来返回结果。所以我想知道查询是否足够聪明,可以在结果达到 10 行时停止,如果它返回所有可能的结果,然后只打印前 10 行。

提前感谢您的回复 !

4

2 回答 2

4

使用select top N查询时仍然完全执行,只是数据页读取在指定行数受到影响后停止。所有索引页的读取和排序仍然必须发生,因此根据 where 条件或子查询的复杂性,执行肯定仍然需要时间。 select top N在功能上类似于使用set rowcount

于 2013-06-11T15:05:24.747 回答
2

迈克尔是对的,但这里有一个特殊情况确实需要提及。如果不使用and子句,查询更快且部分执行。但是这种情况很少有用,因为那时您将获得满足条件的随机 N 行,以便它们物理位于表/索引中。order bygroup by

于 2016-01-26T21:13:19.430 回答