이미 구성되어 있는 table에 특정 컬럼이 중요한 컬럼이고 Null 값이 많을 때 어떻게 조회성능을 높이나요 0 4 806

by 물통20병 [Oracle 기초] 테이블 null [2018.04.24 17:21:58]


안녕하세요 

질문하나만 올리겠습니다.

특정 table에 데이터를 조회하는데 성능에 관한 질문입니다.

특정 table의 조회 성능을 튜닝 하고 있는데 특정 컬럼이 null 값이 많습니다. (110만건, 전체 data에 86%)

특정 컬럼에 null 값 처리를 하지 않으면 정확한 값이 나오지가 않아서 특정 컬럼을 반드시 사용해야하는 상황입니다.

이 컬럼은 index가 적용되어 있는 않는 컬럼입니다.

이 경우 조회성능을 올리기 위해서 어떤 방향으로 접근해야 하나요??

by 마농 [2018.04.25 10:04:48]

사용 쿼리를 보여주세요.


by 물통20병 [2018.04.25 10:45:01]

 select *
   from a
  where sg ='4'
    and dt >= (select gicho_dt
                from  b
                where sg = '4'
                and   dept_cd ='01300'
                and   prod_cd ='6G1011014')
    and dept_cd =    '01300'
    and prod_cd like '6%'
    and prod_cd like '6G1011014';

sg가 4일 때 유난히 오래걸립니다.

index는 sg,dt순으로 걸려 있습니다.


by 마농 [2018.04.25 11:02:50]

널이 많은 거랑 상관 없어 보이네요? 어떤 컬럼이 널이 많은 건지?
prod_cd like '6%' 조건은 왜 있는지 모르겠구요.
prod_cd like '6G1011014' 조건은 이퀄(=) 조건을 써야 하는게 아닌지?
조건절이 더(dept_cd, prod_cd) 있는데 인덱스 구성은 두개(sg, dt) 컬럼 뿐이네요.
b 는 (sg, dept_cd, prod_cd) 로 유니크 인덱스 있어야 할 것 같구요.
a 는 (sg, dept_cd, prod_cd, dt) 인덱스 필요합니다.


by 물통20병 [2018.04.25 11:11:40]

중간에 작업하다가 약간 실수가 있었습니다. 죄송합니다.

0.4초 정도 걸리는데 여기서 더 줄일려면 인덱스를 추가하는게 최선인건가요?? 

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입