2010-03-01 40 views

回答

2

本聲明:

SELECT COUNT(*) AS found 
FROM names 
WHERE name = 'Hulk' 

將返回的記錄總數爲'Hulk'

這種說法:如果至少一個記錄存在

​​

將返回1,否則將不會返回。

如果您只需檢查是否存在至少一條記錄,則後者的查詢效率更高。

+0

@OP:如果因爲某些原因需要使用'select count',請不要使用count(*)',這會使RDBMS工作太困難。使用'count(name)'(在這種情況下)。這樣,如果信息在索引中,它可以使用它。 (儘管我希望系統能夠爲你優化它,但我經常感到驚訝,因爲什麼系統不會爲你優化,所以......) – 2010-03-01 11:10:16

+1

@TJCrowder:所有主要系統都會優化COUNT(*)可能的方式。在這種情況下,'COUNT(name)'將具有相同的語義和性能,但是一般來說,系統需要檢索'name'以確保它不爲null,所以效率會更低,甚至可能產生錯誤的結果。 – Quassnoi 2010-03-01 11:18:08

+0

謝謝大家。 Stackoverflow的岩石! – ahmed 2010-03-01 11:53:54

相關問題