我需要查询其中包含大量数据的Sybase数据库,并希望设置一个限制,以便数据库在10个结果后停止查询。
关键是性能,所以如果它搜索所有结果然后返回最后10个结果就没用了。
提前致谢
答案 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行"。