전체 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