2010-04-23 82 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