상세 컨텐츠

본문 제목

TIL-2022.05.13

SQL

by Sam_Park 2022. 5. 13. 22:14

본문

 

Programmers 코딩테스트 연습 IS NULL 이름이 있는 동물의 아이디

 

null 값으로 인한 성능 저하 관리

SELECT ANIMAL_ID from ANIMAL_INS 
where NAME is not null
order by ANIMAL_ID asc;

-- 1. 알아보기로는 is null / is not null 은 full scan 을 해서 성능 개선이 가능하면 알아봐야함.
-- 2. 하지만 char 타입은 인덱스 사용불가, 개선하기 어려운 것 같음. -> 이 문제는 이게 맞는 듯
-- -- 참고 페이지 : http://wiki.gurubee.net/pages/viewpage.action?pageId=27427980 (관련해서 개인 공부가 좀 더 필요한 것 같다)

-- 3. 그럼에도 기본적으로 null 값이 없도록 default 값을 넣어두는 형태로 만들면 조회 성능 향상 가능
-- 4. 안 되어 있다면, update t set name ='n' where is null 등의 형태로 수정해주고, alter t 로 변경해놓기

--- 

 

Programmers 코딩테스트 연습 GROUP BY 고양이와 개는 몇 마리 있을까

 

union, union all 성능 차이

-- 나의 1차 답안
SELECT ANIMAL_TYPE, count(ANIMAL_TYPE) as count
from ANIMAL_INS 
group by ANIMAL_TYPE
order by ANIMAL_TYPE;


-- 다른 사람 답안(1), 고양이와 개를 각각 필요한 순서로 검색하고 Union all 진행
-- Union 사용시 ANIMAL_TYPE 관련해서 중복 제거 과정이 들어가서 자동 정렬이 됨(dog, cat 순서로 해도 cat,dog 순서 출력됨) -> 성능 저하
-- 필요한 순서로 검색하고 Union all 진행
SELECT ANIMAL_TYPE, COUNT(ANIMAL_TYPE) as count
FROM ANIMAL_INS
WHERE ANIMAL_TYPE = 'Cat'
group by ANIMAL_TYPE
UNION ALL--union 사용시 자동 정렬 되지만, 성능 저하
SELECT ANIMAL_TYPE, COUNT(ANIMAL_TYPE) as count
FROM ANIMAL_INS
WHERE ANIMAL_TYPE = 'Dog'
group by ANIMAL_TYPE


-- 다른 사람 답안(2), where 문에 고양이와 개를 각각 지정
SELECT ANIMAL_TYPE, count(ANIMAL_TYPE) as count
FROM ANIMAL_INS 
WHERE ANIMAL_TYPE IN ('Cat', 'Dog')
group by ANIMAL_TYPE
order by ANIMAL_TYPE

'SQL' 카테고리의 다른 글

sql 튜닝 공부 책 구매  (0) 2022.05.13
오라클 SQL 초반의 두 고비, hr 계정 select문 연습문제  (1) 2021.12.01

관련글 더보기

댓글 영역