개발 & 데이터베이스/DB

오라클 COUNT(*) COUNT(1) vs COUNT(컬럼) 차이점

K.두부 2023. 9. 5. 16:03
반응형

오늘 데이터베이스를 확인하던 중에 COUNT(1) 을 쓴 쿼리를 확인하고, COUNT(*) 과 어떤 차이가 있는지 궁금해서 검색해봤다. COUNT() 함수는 집계 함수로 SELECT 쿼리에 대한 행 수를 계산하는 함수이다.

 

 

COUNT(*) vs COUNT(1)

결론부터 말하자면 두 개의 명령문에는 차이가 없다

두 개의 명령문은 모두 동일한 방식으로 작동하며 성능 상에 차이가 없다고 공식 문서에도 명시되어있다.

MySQL 8.0 Reference Manual

 

 

COUNT(*), COUNT(1) vs COUNT(컬럼명)

COUNT(컬럼) : 해당 컬럼에 NULL 값이 들어간 행은 제외하고 계산함.

COUNT(*) : NULL 값에 상관없이 모두 계산함.

 

COUNT(컬럼) 명령문은 해당 컬럼에 NULL 값이 있으면 세지 않기 때문에 모든 행을 세는 COUNT(*) 과 결과값부터 차이가 생긴다. 모든 행의 개수를 파악하기 위해서는 COUNT(*) 명령문을 사용해야한다.

 

또한 내부에 DISTINCT 명령문을 함께 입력해서 COUNT(DISTINCT 컬럼) 으로 조회하면 해당 컬럼의 중복된 값을 제거한 행의 개수를 파악할 수 있다.

반응형