5

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

SELECT TOP 1 value FROM table ORDER BY value

或者

SELECT TOP 1  MIN(value) FROM table

我们可以假设我们有两种情况,情况 1. 没有索引和情况 2. 有索引值。
任何见解都值得赞赏。谢谢!

4

1 回答 1

9

在不存在索引的情况下:

  • MIN(value) 应该在 O(N) 时间内通过单次扫描实现;
  • TOP 1 ... ORDER BY 将需要 O(N Log N) 时间,因为指定的排序(除非数据库引擎足够聪明,可以读取意图,我不想在生产代码中依赖它)。

当索引确实存在时:

  • 两者都应该只需要 O(1) 时间,使用索引。
于 2013-03-07T16:20:41.330 回答