我想知道这个查询是如何执行的:
SELECT TOP 10 * FROM aSybaseTable
WHERE aCondition
事实是这个查询花了太多时间来返回结果。 所以我想知道如果结果达到10行,如果它返回所有可能的结果,然后只打印10个第一行,那么查询是否足够聪明,可以停止。
提前感谢您的回复!
答案 0 :(得分:3)
当使用select top N
时,查询仍然完全执行,只有数据页在指定的行数受到影响后才会停止读取。所有索引页面都会读取,并且仍然必须进行排序,因此根据where条件或子查询的复杂性,它肯定仍然需要时间来执行。 select top N
在功能上与使用set rowcount
答案 1 :(得分:1)
order by
和group by
子句,则查询将执行得更快且部分更快。
但是这种情况很少有用,因为那时你将获得满足条件的随机N行,以便它们实际位于表/索引中。