데이터가 1700만건정도 들어있는 테이블이 있구요.
PRODUCT_NO, PRODUCT_CODE, ,NAME, STORAGE_FLG
대강 요런 4개의 필드가 있습니다.
이 테이블에는 PRODUCT_NO에 프라이머리키를 달아서 단일 인덱스가 하나 생성되어있구요.
STORAGE_FLG는 NUMBER형으로 0과 1만 들어가고 0이면 창고 1이면 진열중 이라는 의미입니다.
이 테이블에서 검색 조건으로 자주 사용될것으로 예상한게
PRODUCT_CODE와 STORAGE_FLG인데요.
PRODUCT_CODE나 PRODUCT_NO는 인덱스를 붙이면 인덱스를 잘 탑니다.
근데 STORAGE_FLG는 인덱스를 타지 않네요...
확인하기 쉽게위해서 현제 PRODUCT_NO의 인덱스는 지운상태고 STORAGE_FLG 단일 인덱스를 만들어 놓은 상태입니다.
STORAGE_FLG는 1700만건의 데이터중에 10건정도만 1이고 나머지는 0인상태입니다.
SELECT COUNT(*) FROM ALL_PRODUCT WHERE STORAGE_FLG = 1
이렇게 검색해도 인덱스를 타지않는 이유를 잘 모르습니다 ^^;
데이터가 0과 1뿐이라 인덱스를 타지 않는 편이 더 효율이 좋다고 오라클이 판단하고 있는걸까요?