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

时间:2013-03-07 16:07:04

标签: sql performance aggregate-functions

问题很简单。哪个查询会更快:

SELECT TOP 1 value FROM table ORDER BY value

SELECT TOP 1  MIN(value) FROM table

我们可以假设我们有两个案例,案例1.没有索引和案例2.有索引值。
任何见解都表示赞赏。谢谢!

1 个答案:

答案 0 :(得分:9)

在没有索引的情况下:

  • MIN(值)应该在O(N)时间内通过单次扫描实现;
  • TOP 1 ...由于指定的排序,ORDER BY将需要O(N Log N)时间(除非数据库引擎足够智能以读取意图,我不愿意依赖于生产代码)。

当索引存在时:

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