SELECT TOP N如何在Sybase ASE中工作

时间:2013-06-11 09:02:26

标签: performance select sybase

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

SELECT TOP 10 * FROM aSybaseTable
WHERE aCondition

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

提前感谢您的回复!

2 个答案:

答案 0 :(得分:3)

当使用select top N时,查询仍然完全执行,只有数据页在指定的行数受到影响后才会停止读取。所有索引页面都会读取,并且仍然必须进行排序,因此根据where条件或子查询的复杂性,它肯定仍然需要时间来执行。 select top N在功能上与使用set rowcount

类似

答案 1 :(得分:1)

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