2013-01-09 67 views
2

我正在使用MySQL,並且我已經多次閱讀COUNT(*)通常比COUNT(Column)更快。哪個更快:COUNT(DISTINCT列)與COUNT(*)... GROUP BY列

但是,我需要得到COUNT截然不同的行。據我瞭解,我可以在2種不同的方式做到這一點:

a) SELECT COUNT(DISTINCT Column) ...

b) SELECT COUNT(*) ... GROUP BY Column

在一般情況下,這是更快?如果它取決於,那麼它是什麼取決於

+1

測試自己? – nawfal

+0

我相信你應該看看'SQL_CALC_FOUND_ROWS'並停止使用'COUNT()',除非真的需要。 – Peter

+0

@Peter不一定是。見http://stackoverflow.com/questions/186588/which-is-fastest-select-sql-calc-found-rows-from-table-or-select-count – nawfal

回答

4

SELECT COUNT(*) FROM table GROUP BY column返回按列分組的每個值的行數,而不是組數。

SELECT COUNT(DISTINCT column) FROM table返回組數(儘管您也可以使用GROUP BY查詢中的行計數得出結果)。

+0

請您提供這兩者之間差異的示例,因爲說明對於像我這樣的非專家有些困惑。謝謝! – ProgrammerGirl

+2

@Programmer如果'SELECT column FROM table'返回'5,6,5,7,5,6,5',那麼'SELECT COUNT(*)FROM TABLE GROUP BY column'將​​返回'4,2,1'(或變體),而'SELECT COUNT(DISTINCT column)FROM table'返回'3'。 – Neil