* 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 |