Sql 性能差异:按选择前1订单与选择最小订单(val)

Sql 性能差异:按选择前1订单与选择最小订单(val),sql,performance,aggregate-functions,Sql,Performance,Aggregate Functions,问题很简单。哪种查询速度更快: SELECT TOP 1 value FROM table ORDER BY value 或 我们可以假设我们有两个案例,案例1。没有索引和案例2。以值为索引。 如有任何见解,我们将不胜感激。谢谢 如果不存在索引: 最小(值)应在单次扫描的O(N)时间内实现 第一名。。。由于指定的排序,orderby将需要O(N logn)时间(除非DB引擎足够聪明,可以读取intent,我不愿意在生产代码中依赖它) 当索引确实存在时: 使用索引,两者都只需要O(1)个时

问题很简单。哪种查询速度更快:

SELECT TOP 1 value FROM table ORDER BY value

我们可以假设我们有两个案例,案例1。没有索引和案例2。以值为索引。

如有任何见解,我们将不胜感激。谢谢

如果不存在索引:

  • 最小(值)应在单次扫描的O(N)时间内实现
  • 第一名。。。由于指定的排序,orderby将需要O(N logn)时间(除非DB引擎足够聪明,可以读取intent,我不愿意在生产代码中依赖它)
当索引确实存在时:

  • 使用索引,两者都只需要O(1)个时间

您不需要调用
TOP 1
,因为
MIN
已经返回了一个值。如果有任何差异,它将取决于所使用的dbms,因此您可能需要添加感兴趣的dbms。这两个操作不相等,例如,如果列中存在
NULL
值,
TOP 1
+
order by
将返回
NULL
,而
MIN
将返回最小的非NULL值。谢谢。我一直在寻找这样的答案!我看到“批准”进来了——这总是足够了,谢谢。
SELECT TOP 1  MIN(value) FROM table