본문 바로가기
SQL

[SQL] 성능 좋은 SQL 작성법

by Mr.Han 2024. 8. 9.

* DBMS의 원활한 Index 활용을 고려하여 SQL 작성해야 함.

1. WHERE 절 컬럼 가공하지 않음.

저장되어 있는 Index 활용 불가

# X
select id, name
  from member
 where substring(birth_date, 1, 4) = '2004';
 
# O
select id, name
  from member
 where birth_date like '2004%';

 

2. 컬럼과 변수의 데이터 타입 맞춤.

product_code 컬럼이 varchar type이라면?

숫자형으로 사용하면 DBMS 내부적으로 product_code 컬럼을 int 형식으로 형변환 함.

# X
select product_name, price
  from product
 where product_code = 23091507;
 
 # O
 select product_name, price
  from product
 where product_code = '23091507';

 

3. 동일 테이블 여러 번 접근 지양

데이터 출력 속도 저하됨.

# X
select order_id,
	(select p.product_name from product p where p.product_code = o.product_code) as product_name,
	(select p.price from product p where p.product_code = o.product_code) as price
  from order o;
 
# O
select o.order_id, p.product_name, p.price
  from order o left outer join product p
    on p.product_code = o.product_code;

 

 

4. 되도록이면 UNION 보다는 UNION ALL 사용

중복을 제거하기 위해서 DBMS 내부적으로 Sorting 작업 거침.

# X
select ID, name
  from member
 where id % 2 = 0
union
select ID, name
  from member
 where id % 2 = 1;
 
 # O
 select ID, name
  from member
 where id % 2 = 0
union all
select ID, name
  from member
 where id % 2 = 1;

 

5. LIKE 조건 사용시 %가 반드시 필요한지 고려

저장되어 있는 Index 활용 불가

# X
select id, name
  from member
 where name like '%김%';
 
 # O
select id, name
  from member
 where name like '김%';

'SQL' 카테고리의 다른 글

[SQL] 분석 실습  (0) 2024.08.06
[SQL] 자주 쓰는 DDL / DML 기본  (0) 2024.08.05
[SQL] 데이터를 삽입하고 불러오는 방법  (0) 2024.08.05