두 쿼리 중에 어떤것이 좋나요? 아니면 더 좋은 쿼리가 있을 까요? 0 6 1,451

by 개발자식아 [MySQL] count sum case [2019.12.20 16:05:41]


둘중에 어떤게 빠를까여? 
저는 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;
 

 

by DarkBee [2019.12.20 16:29:36]
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' )
  ;

 


by 개발자식아 [2019.12.23 09:13:00]

소중하고, 좋은 정보 감사합니다!


by 마농 [2019.12.20 16:34:35]

1번은 카운트 두번 하는 비효율
2번은 조건절이 없어서 안좋네요.
 - 조건절 추가하고
 - else 절은 불필요하고
 - sum 은 count 로


by 개발자식아 [2019.12.23 09:13:04]

소중하고, 좋은 정보 감사합니다!


by 개발자식아 [2019.12.23 09:14:19]

-- 테이블 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');
 

 


by 마농 [2019.12.23 09:23:30]

SUM 을 COUNT 로 변경

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입