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

Posted

技术标签:

【中文标题】如何限制 Sybase 中返回的结果数量?【英文标题】:How do I limit the amount of results returned in Sybase? 【发布时间】:2010-12-07 21:53:16 【问题描述】:

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

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

提前致谢

【问题讨论】:

你想要哪 10 个?前 10 个? 【参考方案1】:

我相信您可以先执行 SET ROWCOUNT 10,然后在此会话中的所有查询,直到进一步的 SET ROWCOUNT 将返回不超过 10 行。正如评论指出的那样,这会影响会话中的所有查询(不仅仅是SELECTs!),直到关闭(通过设置为0)或设置不同 - 这种“全局”效果使它不如其他引擎的典型 LIMIT 子句方便,后者本质上是每个查询,但是,我认为您对此无能为力。

【讨论】:

并设置 ROWCOUNT 0 以关闭行数限制。 另外值得强调的是,当它设置为非零值时,其他语句(例如更新和删除)将受到影响【参考方案2】:

在 Sybase 12.5 及更高版本中,您可以在 select 语句中使用***谓词。这是 MSSQL 已经有很长一段时间的非 ANSI 功能。

select top 10 * from people

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

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

【讨论】:

它也适用于 UPDATE 和 DELETE。 UPDATE TOP 10 FROM people...DELETE TOP 10 people见infocenter.sybase.com/help/index.jsp?topic=/…【参考方案3】:

我碰巧偶然发现了这个问题,并使用 TOP 和 START AT 从 sybase doc 替换 mysql LIMIT 找到了答案。你需要使用 ORDER BY 否则你会得到不可预知的结果。

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

选择 TOP 2 开始于 5 * 来自员工 按姓氏DESC排序;

【讨论】:

以上是关于如何限制 Sybase 中返回的结果数量?的主要内容,如果未能解决你的问题,请参考以下文章

限制 CloudKit 中返回的结果数量

《MongoDB入门教程》第13篇 限制返回结果数量

《MongoDB入门教程》第13篇 限制返回结果数量

《MongoDB入门教程》第13篇 限制返回结果数量

如何限制rabbitmq中消费消息的数量?

如何对 cloudkit 中给出的结果数量设置限制