Oracle 초보 질문 드립니다. 현업은 Application 개발자인데 어떻게 하다보니 Oracle 테이블도 만져야 하는 상황입니다. ㅜㅜ
원본 테이블에서 조회가 점점 느려져서 1년치 정도의 데이터(500만건 정도)를 View로 생성하면 조회 속도를 빠르게 할 수 있지 않을까 해서 View를 만들어 보려 합니다.
CREATE OR REPLACE VIEW MSRDATA_VW
AS
SELECT * FROM MSRDATA_TB
WHERE MSR_DATE BETWEEN (SELECT TO_CHAR(SYSDATE - 365, 'YYYYMMDD') || '000000' FROM DUAL)
AND (SELECT TO_CHAR(SYSDATE, 'YYYYMMDDHH24MISS') FROM DUAL)
ORDER BY MSR_DATE, SITE_ID;
이와 같이 View를 만들었는데 실제로 별로 빨라진 것을 느끼지 못하기에 도움을 요청합니다.
원본 테이블명은 MSRDATA_TB 입니다. 이 테이블에는 50여개 지점에서 수집되는 데이터가 5분에 1회씩 데이터가 저장됩니다. 각 지점이 SITE_ID가 되고 측정시각이 MSR_DATE가 됩니다. 이 시각은 매 5분 정각 시각으로 되어있고 14자리 문자열(YYYYMMDDHH24MISS)로 Varchar2 포멧으로 되어있습니다. 여기에는 아래와 같은 인덱스가 만들어져 있습니다.
CREATE UNIQUE INDEX MSRDATA_PK ON MSRDATA_TB
(SITE_ID, MSR_DATE)
LOGGING
TABLESPACE TMS_INDEX
PCTFREE 10
INITRANS 2
MAXTRANS 255
STORAGE (
INITIAL 64K
MINEXTENTS 1
MAXEXTENTS 2147483645
PCTINCREASE 0
BUFFER_POOL DEFAULT
)
NOPARALLEL;
그런데 View를 생성하고 이 테이블에서 1개월치 데이터를 조회하니 별로 속도가 빨라지는 것을 느끼기 어렵습니다.
제가 View를 잘 못 생성한 것인지요?
또한 자료를 찾아보니 Materialized View라는 것이 속도가 빨라지는 것을 느낄수 있다고 하는데 어떻게 만드는 것인지요?
도움 부탁드립니다. 그리고 View에도 Index를 생성할 수 있는지도 가르쳐 주시면 감사하겠습니다.
점심 맛있게 드시고 좋은 하루 보내십시오.