>  기사  >  데이터 베이스  >  MySQL 최적화 선택 카운트 효율성

MySQL 최적화 선택 카운트 효율성

高洛峰
高洛峰원래의
2016-12-02 14:35:081320검색

1. SELECT COUNT(*) FROM tablename은 어떤 상황에서도 최선의 선택입니다.

2. SELECT COUNT(*) FROM tablename WHERE COL = 'value';

3. SELECT COUNT(COL) FROM 테이블명 발생을 방지합니다.

COUNT(*) 및 COUNT(COL)

온라인으로 검색해 보니 다양한 의견이 나왔습니다.

예를 들어 COUNT(COL) ) COUNT(*);보다 빠릅니다.

COUNT(*)가 COUNT(COL);보다 빠르다고 생각하는 사람들은

이것은 실제로 문자에 따라 다르다고 아주 웃기게 말했습니다.

WHERE 제한이 없으면 COUNT(*)와 COUNT(COL)는 기본적으로 동일한 것으로 간주될 수 있습니다.

그러나 WHERE 제한이 있으면 COUNT(*)가 COUNT(COL)보다 훨씬 빠릅니다. );

구체적인 데이터 참조는 다음과 같습니다:

mysql> SELECT COUNT(*) FROM cdb_posts where fid = 604;

+————+

| COUNT(fid) |

+————+

| 79000 |

+———— —+

1개 행(0.03초)

mysql> SELECT COUNT(tid) FROM cdb_posts where fid = 604;

+————+

| ) |

+————+

| 79000 |

+————+

1행 세트(0.33초)

mysql> SELECT COUNT(pid) FROM cdb_posts 여기서 fid = 604;

+————+

| COUNT(pid) |

+ ————+

| 79000 |

+————+

1행 세트(0.33초)

COUNT(*) 일반적으로 기본 키에 대해 인덱스 스캔을 수행하지만 COUNT(COL)은 반드시 그런 것은 아닙니다. 또한 전자는 테이블에서 일치하는 총 레코드 수를 계산하는 반면 후자는 테이블에서 일치하는 모든 COL을 계산합니다. 기록. 차이점이 있습니다.

WHERE when COUNT

간단히 말하면 COUNT가 있을 때 WHERE 제한이 없으면 MySQL은 저장된 행의 총 개수를 직접 반환합니다

. is WHERE 특정 제약 조건 하에서 MySQL의 전체 테이블 탐색은 항상 필요합니다.

최적화 요약:

1. SELECT COUNT(*) FROM tablename은 어떤 상황에서도 최선의 선택입니다.

2. SELECT COUNT(*) FROM tablename을 최소화합니다. = '값' 쿼리;

3. SELECT COUNT(COL) FROM 테이블 이름을 피하세요.


성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.