我記得有傳言稱被告知:
從未使用count( *)當計數(1)將做
最近我把這個建議傳給了另一個開發者,並且被證明這是真的。我的觀點是我得到建議時告訴我的:數據庫只會返回第一列,然後將被計數。反駁是數據庫不會評估括號中的任何內容。
從小桌子上的一些(不科學的)測試看來,似乎沒有區別。我目前無法訪問任何大型表格進行試驗。
我在使用Sybase時得到了這個建議,而且表有數以百萬計的行。我現在正在使用Oracle,而且數據少得多。
所以我想總的來說,我的兩個問題是:
- 這是更快,計數(1)或COUNT(*)?
- 這會因不同的數據庫供應商而有所不同嗎?
1. ANSI SQL定義'COUNT(*)'應該優化2.這適用於大多數RDBMS。別的僅適用於舊版本的*另有說明,否則*承擔COUNT(*)進行了優化。 – gbn