본문 바로가기

미역/Oracle & myBatis

COUNT(1)에 대해

COUNT(*)

 - 전체 행을 결과 집합으로 가져오고 카운트함수가 1을 집계한다.

COUNT(1) 

 - 행을 가져오지 않고 일치하는 각 행에 대해 1을 호출한다.

 

하지만 COUNT(*)과 COUNT(1)은 성능상 차이가 없다.

COUNT(1)도, COUNT(2)도, COUNT(10)도 COUNT(*)와 같다.

그렇지만 코드난독화를 피하기 위해서 COUNT(*)를 사용하길 권장한다. 애초에 이쪽이 표준이다.

 

COUNT(*)과 COUNT(컬럼명)은 차이가 있다.

COUNT(*)

 - NULL상관없이 전체 행의 건 수를 가져온다.

COUNT(컬럼명)

 - NULL을 걸러낸 건 수를 가져온다.

 

 

회사에서 COUNT(1)을 쓰길래, 성능이 좋아서 그런가 싶어서 찾아봤는데 아니었다;;

오히려 쓰지 말라는 말만 들었지만 그래도 회사에서 이렇게 쓰라면 이렇게 해야지 뭐 어쩌겠나 ㅋㅋㅋ

 

 

참고 출처 

https://stackoverflow.com/questions/2710621/count-vs-count1-vs-countpk-which-is-better

 

COUNT(*) vs. COUNT(1) vs. COUNT(pk): which is better?

I often find these three variants: SELECT COUNT(*) FROM Foo; SELECT COUNT(1) FROM Foo; SELECT COUNT(PrimaryKey) FROM Foo; As far as I can see, they all do the same thing, and I find myself using ...

stackoverflow.com

https://gent.tistory.com/274

 

 

 

 

'미역 > Oracle & myBatis' 카테고리의 다른 글