[SQL 튜닝] SQL 문 단순 수정을 통한 튜닝(2): 사용하지 않는 함수를 포함하는 나쁜 SQL 문

최건우·2023년 9월 29일
0

데이터베이스/SQL

목록 보기
10/13
post-thumbnail

1. 사용하지 않는 함수를 포함하는 나쁜 SQL 문

1-1. 현황 분석

성별을 기준으로 몇 명의 사원이 있는지 출력하는 쿼리가 있다고 하자. 이때 성별의 값이 NULL이라면 'NO DATA'라고 출력하도록 IFNULL() 함수로 작성했다.

튜닝 전 실행 계획은 다음과 같다.

Key 항목이 I_성별_성 이므로 인덱스 풀 스캔 방식으로 수행되며, Extra 항목이 Using temporary이므로 임시 테이블을 생성한다.



1-2. 튜닝 수행

튜닝하기 전의 SQL 문을 실행한 결과 사원 테이블의 성별 컬럼에는 NULL값이 존재하지 않는다는 사실을 확인했다. 더군다나 만약 성별 컬럼에 NOT NULL 속성이 설정되어 있다면, 해당 컬럼에는 더더욱 NULL이 존재할 수 없다. 따라서 NULL값을 처리하기 위해 사용한 IFNULL() 함수는 불필요한 로직임에도 불구하고 DB 내부적으로 별도의 임시 테이블을 생성하므로, 튜닝의 대상이 된다.



1-3. 튜닝 결과

IFNULL()을 제거한 SQL문과 그 실행 결과는 다음과 같다. 실행 시간은 1.04초에서 0.17초로 향상되었다.

튜닝 후 실행 계획을 살펴보면, Extra 항목이 Using index 이므로 임시 테이블 없이 인덱스만 사용하여 데이터를 추출함을 알 수 있다.





profile
부족한 경험을 채우기 위한 나만의 기록 공간

0개의 댓글