홍이
110
2017-04-21 19:04:27.0
7
173

복합인덱스


날짜, 국가, 코드 / 날짜, 국가 이렇게 2가지경우로 들어가서


그래서 이 날짜, 국가, 코드 3개가지고 국가 날짜 코드 순으로 인덱스를 만들었는데요.


날짜와 국가만 조건절에 들어가는경우는 위에 인덱스를 탄다고 들었는데


저렇게 생성후 실행해봤는데 조건절에 날짜. 국가가 들어가는 경우 타지 않아서


새로 2개만 가지고 만들어야되는지.. 

0
0
  • 답변 7

  • 취주운생
    16
    2017-04-21 19:41:28.0

    아마 복합인덱스를  '국가 날짜 코드' 순으로 지정하셨다면, 

    날짜 국가 복합인덱스로 검색하면 안될겁니다.

    아마 먹히는 인덱스는 3종류 (국가) (국가,날짜) (국가,날짜,코드) 일꺼같네요



    참고하세요..

    0
  • siva6
    2k
    2017-04-21 22:04:14.0

    일반적으로 타는게 맞습니다.

    쿼리문과 실행계획을 올려보시죠.

    0
  • 홍이
    110
    2017-04-21 22:56:16.0 작성 2017-04-21 22:59:35.0 수정됨

    @취주운생 아 저렇게 순서대로 했을때 안먹혀서요ㅠㅠ순서바꿔보고도 했었는데 안되고... 이유를 모르겠는데 힌트주면 쿼리에서의 속도와 프로시저에서의 속도가 차이가 나더라구요..새로운 프로시저 생성시에는 빠르고..

    0
  • 홍이
    110
    2017-04-21 23:14:26.0 작성 2017-04-21 23:15:05.0 수정됨

    @siva6 움 

    구조만 보면..

    select 필드명 from (

    select * from 테이블명 where 국가 = 'kr' and log_dt >= '2017-03-22' and log_dt < '2017-03-23' ) left outer join ~

    아! 그리고 중요한거는..

    일주일 전 데이터와 해당일의 데이터를 비교하는건데 그래서 저런쿼리가 2개가있는데

    해당일의 데이터는 저 인덱스를 타는게아니고 pk로 해놓은걸 타더라구요.. 그리구 일주일 전의 데이터는 아무인덱스를 안타구요..

    날짜에 따라서 인덱스가 바뀔수가있나요??

    0
  • siva6
    2k
    2017-04-22 10:45:44.0

    log_dt가 varchar같은 문자열 타입인가요?

    0
  • 홍이
    110
    2017-04-22 12:55:52.0

    아니욥 datetime 이요~

    0
  • siva6
    2k
    2017-04-22 14:59:30.0

    인덱스 컬럼이 타입변형이 일어나게 되면 인덱스 역할을 못합니다.

    1
  • 로그인을 하시면 답변을 등록할 수 있습니다.