【问题标题】:How Does SELECT TOP N work in Sybase ASESELECT TOP N 如何在 Sybase ASE 中工作
【发布时间】:2013-06-07 01:46:36
【问题描述】:

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

SELECT TOP 10 * FROM aSybaseTable
WHERE aCondition

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

提前感谢您的回复!

【问题讨论】:

  • 您是否尝试过查看查询计划?
  • 是的,但我不认为它增加了那么多信息..

标签: performance select sybase


【解决方案1】:

Michael 是对的,但这里确实需要提及一种特殊情况。 如果不使用 order bygroup by 子句,查询 WILL 会执行得更快且部分执行。 但是这种情况很少有用,因为那时您将获得满足条件的随机 N 行,以便它们在物理上位于表/索引中。

【讨论】:

    【解决方案2】:

    当使用select top N时,查询仍然完全执行,只是数据页读取在指定行数受到影响后停止。所有索引页的读取和排序仍然必须发生,因此根据 where 条件或子查询的复杂性,执行肯定仍然需要时间。 select top N 在功能上类似于使用set rowcount

    【讨论】:

    • 我就是这么想的。感谢您的回复@MichaelGardner
    猜你喜欢
    • 2017-10-24
    • 2014-04-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-02
    相关资源
    最近更新 更多