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

www*_*www 5 sql performance aggregate-functions

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

SELECT TOP 1 value FROM table ORDER BY value
Run Code Online (Sandbox Code Playgroud)

要么

SELECT TOP 1  MIN(value) FROM table
Run Code Online (Sandbox Code Playgroud)

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

Pie*_*ens 9

在没有索引的情况下:

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

当索引存在时:

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