2010-04-23 77 views

回答

5

计数数量的count总是昂贵的查询,因为这将需要进行全表扫描。您的要求是不是真的我清楚,但如果你只是想看看是否有任何数据会更便宜做常规选择与限制1

-2

它的速度更快检索行

+0

对于较大的表格,这不可能是真的。这是一个全表扫描,不管它如何索引,如果你做了一个计数。 – kurige 2010-04-23 12:27:08

0

它认为这取决于哪个存储引擎使用数据库...

Anywawy,良好的实践来检验羯羊有与否的结果是从第k个()函数检查返回值!

5

计数必须在物理计算符合您的标准,这是不必要的工作,因为你不关心数量的所有行。

看看使用EXISTS

0

[我使用Oracle来作为例子,但相同的概念全线通常适用。]

COUNT有物理标识将要返回的所有行。根据查询的复杂性,查询计划可能需要对查询的一个或多个表进行表扫描。你需要做一个EXPLAIN PLAN来确定。

返回单个行是否需要ORDER BY可能需要相同的处理。该数据库不能只是给你的第一行,直到

  1. 所有的行识别和
  2. 行已被排序。

另外,根据行数返回时,该ORDER BY的复杂性,以及SGA大小,临时表可能需要创建(这会导致各种其他开销)。

如果没有ORDER BY,单行应该会更快,因为一旦数据识别单个行返回,它的完成。也就是说,从一次执行到下一次执行都不能保证行的返回顺序相同,因此通常涉及到ORDER BY