테이블에 인덱스를 생성하려는 데요
화면에 검색조건이 여러개 있습니다
=======================================================================================
화면1 검색조건 : 결제사거래승인일 / 점포 / 결제구분 / 제휴구분 / 주문ID / 사업부 / 결제사 , 필수검색조건 : 결제사거래승인일
화면2 검색조건 : 매출일자 / 점포 / 결제구분 / 제휴구분 / 주문ID / 사업부 / 결제사 , 필수검색조건 : 매출일자
=======================================================================================
위와 같은데요
집계용 테이블 조회라 딱 저 두화면에서만 사용합니다.
그래서 인덱스도 그 두화면의 쿼리에 맞게 생성하려고 합니다.
결합인덱스로 해서 아래와 같이 생성했습니다.
-------------------------------------------------------------------------------------------------------------------------------------------------
화면1 쿼리를 위한 결합인덱스 컬럼 : 결제사거래승인일 / 점포 / 결제구분 / 결제구분상세 / 제휴구분 / 주문ID / 사업부 / 결제사, (이 순서대로 인덱스 컬럼을 구성했습니다)
화면2 쿼리를 위한 결합인덱스 컬럼 : 매출일자 / 점포 / 결제구분 / 결제구분상세 / 제휴구분 / 주문ID / 사업부 / 결제사, (이 순서대로 인덱스 컬럼을 구성했습니다)
------------------------------------------------------------------------------------------------------------------------------------------------
그런데 PM이 결합 인덱스 컬럼이 너무 많다고 줄여야 한다고 결합인덱스를 아래와 같이 변경했습니다
---------------------------------------------------------------------------------------
인덱스 1 컬럼 : 결제사거래승인일
인덱스 2 컬럼 : 매출일자
인덱스 3 컬럼 : 매출일자 / 결제구분 / 결제구분상세
인덱스 4 컬럼 : 결제사거래승인일/ 결제구분 / 결제구분상세
---------------------------------------------------------------------------------------
그리고 PK 로 인한 기본인덱스가 아래와 같습니다
PK 인덱스 : 주문ID / 주문상세일련번호
이런 상황이고 아래의 컬럼들은 중복도가 높습니다
제휴구분 : 가능한 값 종류 2개
사업부 : 가능한 값 종류 2개
결제사 : 가능한 값 종류 10여개
제가 개발자라 잘 알지는 못하지만 결합인덱스는 인덱스로 구성된 첫번째 컬럼이 WHERE 구문에 없으면 옵티마이저가
해당 인덱스를 타지 않는다고 알고 있는데요
만약 매출일자 / 주문ID 로 화면에서 조회할 경우 옵티마이저는 인덱스를 제대로 탈까요?
현재 구성된 인덱스가 아래와 같은 상황에서 매출일자 / 주문ID로 구성된 인덱스가 없을 경우 인덱스를 타게 될지,
인덱스를 탄다면 어떻게 타게 되는건지 궁금해서요
(실행계획을 보면 되겠지만 혹시 몰라서 질문드립니다)
-------------------------------------------------------------------
PK 인덱스 : 주문ID / 주문상세일련번호
인덱스 1 컬럼 : 결제사거래승인일
인덱스 2 컬럼 : 매출일자
인덱스 3 컬럼 : 매출일자 / 결제구분 / 결제구분상세
인덱스 4 컬럼 : 결제사거래승인일/ 결제구분 / 결제구분상세
-------------------------------------------------------------------
그리고 위와 같은 조건에서 결합인덱스로 컬럼 A, B, C, D 를 만들어서 컬럼 A, C 조건으로 조회하는 것과
단일인덱스로 해서
인덱스 01 : A / 인덱스 02 : B / 인덱스 03 : C / 인덱스 04 : D 를 만들어서 컬럼 A, C 조건으로 조회화는 것 중
어떤 것이 조회 퍼포먼스에 더 좋을까요?
실행계획을 보면 되겠지만, 뭔가 그 원리라든가 그런게 궁금해서 질문드립니다.
감사합니다
답변 주셔서 정말 감사드립니다 ^^
일자 조건은 범위 조건입니다
조언 주셔서 정말 감사합니다 ^^
제가 마지막에 드린 질문이 있는데 이 경우는 어떻게 되는지 알 수 있을까요?
결합인덱스와 단일인덱스 여러개, 둘 중에 어떤게 더 퍼포먼스에 좋을까요?
결합인덱스는 순서대로 조회 대상이 걸러져서 더 빠르다고 들었는데,
단일 인덱스로 여러개 만들어서 아래 처럼 컬럼 A,C로 조회하면
단일 인덱스가 각각 먹히는 건지, 아니면 결합 인덱스 처럼 작동하는건지 궁금합니다
---------------------------------------------------------------------------------------------------
그리고 위와 같은 조건에서 결합인덱스로 컬럼 A, B, C, D 를 만들어서 컬럼 A, C 조건으로 조회하는 것과
단일인덱스로 해서
인덱스 01 : A / 인덱스 02 : B / 인덱스 03 : C / 인덱스 04 : D 를 만들어서 컬럼 A, C 조건으로 조회화는 것 중
어떤 것이 조회 퍼포먼스에 더 좋을까요?
------------------------------------------------------------------------------------------------------