如何限制Sybase返回的结果数量?

时间:2009-10-19 05:48:15

标签: sql limit sybase

我需要查询其中包含大量数据的Sybase数据库,并希望设置一个限制,以便数据库在10个结果后停止查询。

关键是性能,所以如果它搜索所有结果然后返回最后10个结果就没用了。

提前致谢

4 个答案:

答案 0 :(得分:40)

使用Sybase 12.5及更高版本,您可以在select语句中使用top谓词。这是MSSQL已经存在很长时间的非ANSI特性。

select top 10 * from people

您不能在子查询,更新或删除中使用top,并且没有相应的“bottom”子句。

top的优点是你不必担心重置它。如果您使用数据库连接池,这一点尤其重要。

答案 1 :(得分:21)

我相信您可以首先执行SET ROWCOUNT 10,然后在此会话中执行所有查询,直到另一个SET ROWCOUNT返回不超过10行。正如评论指出的那样,这会影响会话中的所有以后的查询(不只是SELECT s!),直到关闭(通过设置为0)或设置不同 - 这个“全局”效果使它比其他引擎的典型LIMIT子句更方便,这本身就是每个查询,但是,我不认为你可以做任何事情。

答案 2 :(得分:1)

我偶然发现了这个问题,并使用sybase doc中的TOP和START AT代替了MySQL LIMIT找到了答案。您需要将ORDER BY用于,否则结果将无法预测。

http://dcx.sybase.com/1101/en/dbusage_en11/first-order-formatting.html

选择前2位开始于5 *    来自员工    按姓氏顺序排列;

答案 3 :(得分:-1)

您可以尝试添加此子句"仅提取前n行"。