我想知道这个查询是如何执行的:
SELECT TOP 10 * FROM aSybaseTable
WHERE aCondition
事实是这个查询花费了太多时间来返回结果。所以我想知道查询是否足够聪明,可以在结果达到 10 行时停止,如果它返回所有可能的结果,然后只打印前 10 行。
提前感谢您的回复 !
我想知道这个查询是如何执行的:
SELECT TOP 10 * FROM aSybaseTable
WHERE aCondition
事实是这个查询花费了太多时间来返回结果。所以我想知道查询是否足够聪明,可以在结果达到 10 行时停止,如果它返回所有可能的结果,然后只打印前 10 行。
提前感谢您的回复 !
使用select top N
查询时仍然完全执行,只是数据页读取在指定行数受到影响后停止。所有索引页的读取和排序仍然必须发生,因此根据 where 条件或子查询的复杂性,执行肯定仍然需要时间。 select top N
在功能上类似于使用set rowcount
迈克尔是对的,但这里有一个特殊情况确实需要提及。如果不使用and子句,查询将更快且部分执行。但是这种情况很少有用,因为那时您将获得满足条件的随机 N 行,以便它们物理位于表/索引中。order by
group by