쿼리를 돌리다 보면 느려서 PLAN을 보고
어디서 느리게 잡히는지 파악한다.
이번엔 테이블의 INDEX가 여러 개인데 가장 빠른 INDEX를 타지 않고 쿼리가 계속 느렸던 현상을 확인했다.
쿼리를 수정하기 전과 수정한 후의 차이점을 계속 확인해도 모르겠더라.. 분명 수정하기 전에는 빠른데 왜 내가 수정하면 느리지?
결론부터 먼저 말하면 테이블을 여러 개 조인할 때
테이블의 데이터가 적은 순서부터 조인을 걸자!
테이블을 추가하고 조인하는데 데이터가 적은 테이블을 뒤에 위치하고 데이터가 많은 테이블을 앞에 위치했더니 계속 인덱스를 잘못 잡고 있었다.
순차적으로 테이블 조회하고 컬럼을 바라보니 꼭 주의하자!
가장 기본인... 부분을 잊고 있었다.. 요즘 건망증이 심해졌나
한참을 찾았네 ㅜㅜ흑
1. 인덱스 컬럼절을 변형
Select col From table Where TO_CHAR(col, 'YYYYMMDD')
2. 조건절에 NULL 또는 NOT NULL 사용
Select col From table Where col IS NULL
3. LIKE, IN 연산자 사용
Select col From table Where col LIKE '블라블라%'
Select col From table Where col IN ('qmf','라')
4. OR 조건 사용
Select col From table Where col = 'A' OR 'B'