inflearn logo
강의

Course

Instructor

45 SQL Tuning Techniques You Can Use Right Away in Practice

Tuning Example 4. Do not process index columns in the where clause

날짜 인덱스관련 질문

18

dirend79555

15 asked

0

제가 보통 실무때도 날짜 타입을 흠 귀찮아서??? to_char(날짜타입,'YYYY') = '2025'(예시)

이런식으로하는데 이렇게 하더라도 그럼 실행계획이 무너지겠네요?

 

sql oracle 데이터-엔지니어링

Answer 1

0

communityai8509

안녕하세요, 인프런 AI 인턴입니다. 개foot님.

날짜 타입 데이터를 TO_CHAR 함수를 사용하여 문자열로 변환한 후 검색하는 방식에 대해 질문을 주셨군요. 이 방법은 인덱스 사용에 영향을 줄 수 있는데, 아래 설명을 참고하시기 바랍니다.

  1. 함수로 래핑된 컬럼: TO_CHAR와 같은 함수를 사용하면, 기본적으로 해당 컬럼에 대한 인덱스가 작동하지 않게 됩니다. 이를 함수 기반 인덱스(function-based index)를 사용하여 해결할 수 있습니다. 일반적으로 함수가 사용되면 옵티마이저는 해당 컬럼에서 인덱스를 사용할 수 없다고 판단하게 되어, 실행 계획에서 전체 테이블 스캔(full table scan)이 이루어질 가능성이 높아집니다.

  2. 실행 계획: 인덱스를 사용할 수 없게 되면, 쿼리의 성능은 데이터 양에 따라 크게 차이가 날 수 있습니다. 특히 큰 데이터셋에서는 검색 속도가 느려질 수 있습니다. 실행 계획을 확인하여 쿼리가 효율적으로 작동하는지를 판단하고, 필요하다면 인덱스 적용이나 다른 최적화 방법을 고려해 보셔야 합니다.

  3. 추천 방안: 함수 기반 인덱스를 생성하여 TO_CHAR와 같은 함수 이용을 최적화하거나, 날짜 범위를 직접 비교하는 방식을 통해 인덱스를 사용할 수 있도록 설계하시면 성능 개선에 도움이 될 것입니다.

유사한 케이스와 최적화 팁에 대한 추가 정보를 원하시면 아래 링크를 참고해 보세요:

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

mysql워크벤치를 실행할때마다 오류가 뜹니다. 해결 방법좀 가르켜주세요.

0

16

1

DAG 실습 - dags_bash_operator 실행 실패

0

10

2

함수기반 인덱스

0

23

2

복합인덱스 확인법

0

14

0

order_product 까마귀발

0

22

1

공통 코드 , 계층 구조 질문

1

30

1

77번 문제

0

22

1

76번 문제

1

28

2

64번 문제 관련

0

32

2

airflow 3로 되면서 2.x대에 지원 중단된 패키지가 많네요..ㅠ

0

33

1

dags 디렉토리안에 sql디렉토리 넣고 .sql 파일로 관리해도 되나요?

0

36

2

2,3차 정규화 질문

0

40

2

수강완료 후 문의 드립니다.

1

41

2

실전 모의고사 난이도

0

35

2

Part2 기출 문제 및 해설 자료 파일 없음 형태

0

48

2

21번 마지막 설명에 대해 질문이 있습니다.

0

42

2

노랭이67번

0

33

1

[DB설계] 탈퇴 유저의 구독 정보 유지 및 이메일 마스킹 관련 질문입니다.

0

48

1

GROUP BY 시 인덱스를 타지 않는 이유가 궁금합니다

0

31

1

맥북용 자료 부탁드립니다.

0

53

2

그 EXISTS의 힌트절에 NESTED LOOP를 쓰는이유 질문

0

101

2

어우 옵티마이저가 뛰어난건지..

0

59

1

안녕하세요 NESTED LOOP 문제에서

0

85

2

Buffers와 TotalCost / cpu_cost / io_cost 의 차이점?

0

105

2