JPA count() vs countBy()

파워소동·2023년 6월 20일
0

JPA

목록 보기
4/5

전체 row count를 할 때 count()로 할 수도 있고 countBy() (조건 없이)를 쓸 수 있다 두 개의 차이가 궁금해짐.

count()의 경우 쿼리가 아래처럼 *로 count를 조회한다

	select
        count(*) as col_0_0_ 
    from
        tb_system_page_log pagelogent0_

countBy()의 경우 쿼리가 아래처럼 ID로 count를 조회한다

    select
        count(pagelogent0_.seq) as col_0_0_ 
    from
        tb_system_page_log pagelogent0_

복합키에서 countBy()를 사용하는 경우에는 count()를 사용하는 것 처럼 *로 조회를 한다...!!!

select
        count(*) as col_0_0_ 
    from
        tb_product_turn producttur0_

어떤 경우에 차이가 있는지는 모르겠다 어차피 id는 not null이니까...
countBy()의 경우 repository에 메소드를 추가해줘야 하는데 count()는 findAll() 처럼 그냥 쓸 수 있어서 count()를 쓰기로 했다 끗.

내려고 했으나~~
혹시 Count(*) vs Count(id) 속도 차이가 있나? 했는데
두 개의 큰 속도 차이는 없는 것 같고 nullable한 일반 컬럼의 경우에는 속도 차이가 발생할 수 있다고 한다

COUNT()는 모든 행을 세는데, COUNT(id)는 id 값이 NULL이 아닌 행만 셉니다. 만약 id 컬럼이 NOT NULL이라면, COUNT(id)가 성능상 더 빠를 수 있습니다. 특히 인덱스가 사용될 때, COUNT(id)가 COUNT()보다 더 효율적으로 작동할 수 있습니다.

진짜 끝~

https://stackoverflow.com/questions/52375300/count-vs-countid-speed

profile
이것저것 모음집

0개의 댓글

Powered by GraphCDN, the GraphQL CDN