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
'미역 > Oracle & myBatis' 카테고리의 다른 글
<resultMap>, <association>, <collection> (0) | 2022.06.03 |
---|