[Oracle] 쿼리 속도 향상 시키기 (Feat. 좌변을 가공하지 않기)

2022. 6. 10. 16:52·Database/Oracle
반응형

스크립트를 작성할 때, '좌변을 가공하지 말라'는 이야기를 들었는데
왜 그럴까요?


아래와 같은 경우에 DB 인덱스를 사용할 수 없다고 합니다.

  1. 인덱스 컬럼이 비교되기 전에 변형이 일어나는 경우
  2. 부정형으로 조건을 기술(not)한 경우
  3. 인덱스 컬럼이 NULL로 비교되는 경우
  4. 옵티마이저가 필요에 따라 상기 적용원칙을 준수했음에도 불구하고 특정 인덱스의 사용을 취사선택함으로써 사용되지 않는 경우

좌변을 가공하게 되면 인덱스를 사용할 수 없으므로
DB 컬럼을 가공하지 않고, 상수 부분을 가공해서 사용하도록 작성하는 것이 바람직합니다.

[ 예시 ]

1) 올바르지 않은 예시 (좌변을 가공)
아래와 같이 좌변의 PROC_DATE를 가공하여 사용하게 되면

200 row(s) fetched - 507ms (+64ms) - 1 warning(s) -> 이만큼 시간이 소요됩니다.

2) 올바른 예시 (상수를 가공)
아래와 같이 상수부분을 가공하여 사용하게 되면

200 row(s) fetched - 33ms (+78ms) - 1 warning(s) -> 이만큼 시간이 소요됩니다.


507 ms -> 33 ms로 조회 속도가 빨라진 것을 확인할 수 있습니다.
DB 컬럼을 가공하지 않고, 상수 부분을 가공해서 사용하도록 해봅시다!

반응형

'Database > Oracle' 카테고리의 다른 글

[Oracle] comment로 테이블, 컬럼 찾기  (2) 2022.08.03
[Oracle] 오라클 날짜, 한글 요일 구하기 (Feat. TO_CHAR)  (0) 2022.07.01
[Oracle] 오라클 TRUNC 함수 사용법 (날짜, 시간, 소수점 절사하기)  (2) 2022.06.30
[Oracle] 천단위 구분기호 출력하는 방법  (0) 2022.06.23
[Oracle] 해당 월의 말일자만 조회하기, 가장 최근 일자만 조회하기 (Feat. LAST_DAY 함수)  (0) 2022.06.22
'Database/Oracle' 카테고리의 다른 글
  • [Oracle] 오라클 날짜, 한글 요일 구하기 (Feat. TO_CHAR)
  • [Oracle] 오라클 TRUNC 함수 사용법 (날짜, 시간, 소수점 절사하기)
  • [Oracle] 천단위 구분기호 출력하는 방법
  • [Oracle] 해당 월의 말일자만 조회하기, 가장 최근 일자만 조회하기 (Feat. LAST_DAY 함수)
Kim-SooHyeon
Kim-SooHyeon
개발일기 및 알고리즘, 블로그 운영에 대한 글을 포스팅합니다. :) 목표: 뿌리 깊은 개발자 되기
    반응형
  • Kim-SooHyeon
    soo_vely의 개발로그
    Kim-SooHyeon
  • 전체
    오늘
    어제
    • 분류 전체보기 (258)
      • 알고리즘 (108)
        • 자료구조 (3)
        • Java (104)
        • Python (1)
      • Back end (73)
        • Spring Project (28)
        • Java (23)
        • API (1)
        • Python (0)
        • Django (3)
        • Linux (1)
        • 서버 (2)
        • 에러로그 (11)
        • 부스트 코스 (1)
      • Front end (9)
        • HTML, CSS (4)
        • JavaScript (4)
        • JQuery (0)
      • 기타 프로그래밍 (4)
        • Android Studio (1)
        • Arduino (2)
        • Azure Fundamental(AZ-900) (1)
      • 개발도구 (24)
        • IntelliJ (2)
        • Git (12)
        • SVN (0)
        • Eclipse (2)
        • 기타 Tool (8)
      • Database (17)
        • Oracle (11)
        • MySQL (0)
        • H2 Database (3)
        • ORM & JPA (1)
      • 자격증 (10)
        • 컴활 1급 (7)
        • 컴활 2급 (2)
        • SQLD (1)
      • 기타 (13)
        • 블로그 운영 (6)
        • 문서 (1)
        • 기타 (6)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    github
    Git
    solved.ac
    백준알고리즘
    알고리즘
    1차원 배열
    BOJ
    구현
    for문
    jpa
    springboot
    배열
    오라클
    단계별풀기
    Oracle
    spring
    문자열
    백준
    java
    백준 자바
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
Kim-SooHyeon
[Oracle] 쿼리 속도 향상 시키기 (Feat. 좌변을 가공하지 않기)
상단으로

티스토리툴바