Table에 index를 추가하여 검색속도를 높이고자 합니다. 1 2 1,162

by 아라시 [Oracle Tuning] [2014.02.11 17:47:39]


안녕하세요. Table의 인덱스 설정에 대해서 좀 질문드리겠습니다.
저희 테이블 구조가 다음과 같습니다. 아주 심플한데요.
공장마다 센서가 달려 있는데, 센서의 종류와 번호별로 매초 데이터를 받아서 저장을 합니다.

FACTORY_ID SENSOR_TYPE SENSOR_NUM AC_DT VALUE
A010 A 1 2013/10/29 22:00:00 1
A020 B 2 2013/10/30 02:00:00 1
A030 C 3 2013/10/30 04:00:00 9

PK는  아래 4개로 잡혀 있고 Index는 잡혀 있지 않습니다.
FACTORY_ID SENSOR_TYPE SENSOR_NUM AC_DT

데이터를 가져올때 센서하나만 3개월~6개월치를 가져와서 분석을 합니다.

SELECT
*
FROM SENSOR_DATA
WHERE FACTORY_ID = 'A010'
    AND SENSOR_TYPE = 'A'
    AND SENSOR_NUM = 1
    AND AC_DT >= SYSDATE - 180

이런식으로 사용을 하는데요. 조회하는데 시간이 꽤나 걸립니다.
그래서 인덱스를 생성해 볼까하는데요. 어떤 컬럼을 Index로 잡으면 좋을까요?
아니면 hint를 어떤식으로 주면 속도가 좀 빨라 질까요?

추가로 공장은 약 50개정도 있고, 센서 종류는 4가지, 센서는 공장마다 300~600개정도 있습니다.

많은 조언 부탁드리겠습니다. 감사합니다.
by 임상준 [2014.02.11 18:44:19]
pk 생성 시 자동으로 pk 컬럼에 인덱스 걸릴겁니다.
상세 정보를 주시거나 플랜, 트레이스 정보를 주시면 답변이 수월할 것 같습니다.

by 마농 [2014.02.11 18:53:36]
총 5개 항목 중 4개가 인덱스 항목이네요. 1개만 빼고
그 1개 항목 조회를 위해 인덱스 읽은 뒤 테이블을 또 경유해야만 합니다.
이럴땐 그냥 5개 항목을 모두 인덱스로 잡는 방법이 있습니다.
인덱스만 읽고 끝내는 거죠.

이 경우 IOT 도 고려해 볼만 합니다.
데이터량이 워낙 많다보니 파티션테이블도 고려해볼만 하구요.
댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입