둘중에 어떤게 빠를까여? 저는 280만 되는 테이블에서 테스트 결과 크게 차이가 없었습니다. 더 훌륭한 분들에 조언 부탁 드립니다! 1. select ( select count(*) from table1 where gul_gum_code = 'C010' ) as C1_Count , count(*) C0_Count from table1 where gul_gum_code = 'C011'; 2. select SUM(case when gul_gum_code = 'C010' then 1 else 0 END) as C010Count, SUM(case when gul_gum_code = 'C011' then 1 else 0 END) as C011Count from table1;
SELECT COUNT(CASE WHEN gul_gum_code = 'C010' THEN 1 END) as C010Count
, COUNT(CASE WHEN gul_gum_code = 'C011' THEN 1 END) as C011Count
FROM table1
WHERE gul_gum_code IN ( 'C010', 'C011' )
;
소중하고, 좋은 정보 감사합니다!
1번은 카운트 두번 하는 비효율
2번은 조건절이 없어서 안좋네요.
- 조건절 추가하고
- else 절은 불필요하고
- sum 은 count 로
소중하고, 좋은 정보 감사합니다!
-- 테이블 total count : 2,809,537
-- 1번
-- 조회 시간 : 1.13s, 1.30s, 1.264s, 1.125, 1.65
select
(
select count(*) from 테이블 where gul_gum_code = 'C010'
) as C1_Count ,
count(*) C0_Count
from
테이블
where
gul_gum_code = 'C011';
-- 2번
-- 조회시간 : 1.126s, 0.983s, 0.981s, 0.981s, 1.6s
select
SUM(case when gul_gum_code = 'C010' then 1 else 0 END) as C010Count,
SUM(case when gul_gum_code = 'C011' then 1 else 0 END) as C011Count
from 테이블;
-- 2-1번 2번에서 else 부분을 제거 한다.
-- 조회시간 : 0.85s, 0.801s, 0.869s, 0.944s, 0.914
select
SUM(case when gul_gum_code = 'C010' then 1 END) as C010Count,
SUM(case when gul_gum_code = 'C011' then 1 END) as C011Count
from 테이블
-- 2-2번 2-1번에서 조건절을 추가!
-- 조회시간 : 0.648s, 0.690s, 0.576s, 0.647s, 0.584s
select
SUM(case when gul_gum_code = 'C010' then 1 END) as C010Count,
SUM(case when gul_gum_code = 'C011' then 1 END) as C011Count
from 테이블
where gul_gum_code in ('C010', 'C011');
SUM 을 COUNT 로 변경