2010-11-18 6 views
2

가능한 중복 :
COUNT(id) vs. COUNT(*) in MySQLCOUNT (fld)가 COUNT (*)보다 빠릅니까?

짧지 만 간단한 : 나는 *이 MySQL의에서 "모든"선택 이해로 MySQL에서는, SELECT COUNT(fld) AS count FROM tblSELECT COUNT(*) AS count FROM tbl보다 빠른 것이다.

COUNT(*)은 카운트를 계산하기 위해 모든 행을 선택하므로 SELECT(id)과 같은 쿼리를 저렴하게 만들 수 있습니까? 아니면별로 중요하지 않습니까?

+2

가능한 복제본 : http://stackoverflow.com/questions/1697137/countid-vs-count-in-mysql –

+1

http://stackoverflow.com/questions/1697137/countid-vs-count-in-mysql – bcmcfc

답변

3

아니요, count(*)count(fld)보다 빠릅니다 (전혀 차이가있는 경우).

count(fld)은 모든 null이 아닌 값을 계산하므로 필드의 데이터를 고려해야합니다.

count(*)은 레코드 수만 계산하므로 데이터에 액세스 할 필요가 없습니다.

0

* 당신이 * 전체 열 목록에 대한 바로 가기입니다 열을 선택하면 사실 그 MySQL의

에서 "모든"선택입니다.

SELECT *SELECT foo, bar이됩니다.

그러나 COUNT(*)은 SQL에서는 의미가없는 COUNT(foo,bar)으로 확장되지 않습니다. COUNT은 일반적으로 선택된 행당 하나의 값을 필요로하는 집계 함수입니다.

1
SELECT COUNT(*) AS count FROM tbl 

위의 쿼리 심지어는 테이블 캐시에서 직접 읽고, 행이 더 WHERE 절은 없다 가정하고 계산하지 않습니다. * 대신 필드를 지정하면 실제로 SQL에 행 수가 세워 지므로 절이 없을 때 *을 사용하는 것이 훨씬 빠릅니다.