Database

[Database] count(*) count(1) 어떤 차이가 있을까?

Dev.J 2022. 2. 16. 22:22

업무를 진행할 때 습관적으로 COUNT(1) 을 사용했다. 누군가 COUNT(*) 대신 COUNT(1) 을 쓰는지 물어봤는데 무언가 명확하게 이렇다 할 답변을 할 수가 없었다. 사실 그냥 제 스타일이예요 라고 할뿐.. 그래서 한번 찾아보게 되었다.

COUNT 함수란?
간단한 집계 함수이지만 매우 효과적이고 널리 사용
주어진 SELECT 쿼리 및 기준에 대해 행 수를 계산하는 데 사용


기본적으로 mysql, oracle 등의 데이터베이스에서 사용하는 집계함수이다. 구글 검색을 통해 나와 같이 COUNT(*), COUNT(1) 의 차이점에 대해 궁금해하는 사람들이 상당했고 Database를 전문적으로 하는 사람은 아니니 개개인의 의견은 다를 수 있지만 개발자로서 검색의 결과를 통합해서 이렇게 정리할 수 있었다.

두 명령문 모두 동일한 방식으로 작동
성능상 차이는 거의 없음
개발자 개인의 스타일
가독성을 위해 1보다는 * 사용을 권장


결국 개발자의 스타일인가 싶고, 다른 동료들과 일할 때 스타일을 맞추면 되는 게 아닌가라는 생각이 들었다. 가독성을 위함이라면 * (아스타리스크) 를 사용하는 게 좋을 것 같다.


+ 더불어 count(column), count(distinct coulumn) 에 대해서도 함께 정리하는 게 좋을 것 같아서 정리!
// COUNT(expression), 여기에서 expression은 컬럼을 지칭한다고 생각하면 된다.

  • COUNT(*) : NULL 및 중복 값을 포함하는 행을 포함하여 SELECT 문에 의해 검색된 행을 카운트
  • COUNT(expression) : 컬럼이 NULL 이 아닌 값을 제외하고 카운트
  • COUNT(DISTINCT expression) : 컬럼이 NULL이 아닌 UNIQUE(고유)한 값만 카운트


추가할 내용이 있다면 언제든 답글을 남겨주세요.


https://link.coupang.com/a/xtJm0

COUPANG

쿠팡은 로켓배송

www.coupang.com

** 이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다.