쿼리 질문 0 4 1,463

by 정형진 [SQL Query] [2010.11.10 18:29:52]


(select /*+ FIRST_ROWS*/
    distinct RTID,  A.STNID,  A.FCLTKEY ,  A.ORD, A.USEYN  ,decode(B.prjstep,'5','5','0')as prjstep   --참조
   from bibit.TN_FACILITY b, bibit.TH_FACILITY_ROUTE_MAPNG a
  where (a.rtid, a.stnid,a.updatedt) in
   (select rtid, stnid, max(updatedt)
  from bibit.TH_FACILITY_ROUTE_MAPNG
where updatedt <= to_char(sysdate-1,'yyyymmddhh')
  and a.fcltkey=b.fcltkey
  AND SUBSTR(FCLTKEY,1,3) = 'BIT'
    group by rtid, stnid))
   

이 쿼리를 빠르게 데이터 수집하는방법은없나요?

너무 늦게 데이터가 나옵니다

by 호야 [2010.11.10 21:02:07]
순수 쿼리만 보고 판단한 거라.. 더 느려 질수도 있습니다.
정확한 답변을 얻으시려면.. trace 정보가 필요 합니다. 수고하세요

WITH t_ss AS(
SELECT /*+ MATERIALIZE */
RTID, STNID, MAX(UPDATEDT) UPDATEDT
FROM BIBIT.TH_FACILITY_ROUTE_MAPNG
WHERE UPDATEDT <= TO_CHAR(SYSDATE-1,'YYYYMMDDHH')
AND SUBSTR(FCLTKEY,1,3) = 'BIT'
GROUP BY RTID, STNID)

SELECT
DISTINCT RTID, A.STNID, A.FCLTKEY , A.ORD, A.USEYN ,DECODE(B.PRJSTEP,'5','5','0')AS PRJSTEP --참조
FROM BIBIT.TN_FACILITY B, BIBIT.TH_FACILITY_ROUTE_MAPNG A
WHERE A.FCLTKEY=B.FCLTKEY
AND (A.RTID, A.STNID,A.UPDATEDT) IN (SELECT RTID, STNID, UPDATEDT FROM t_ss)

by 현 [2010.11.11 00:50:02]
호야님..
그렇게 하면 결과가 다르게 나올꺼 같은데요...

데이터 분포, 플랜정보, 인덱스 정보 등을 올려 주셔야 보다 상세한 진단이 가능할 듯 합니다.

by 호야 [2010.11.11 02:47:22]
아... 데이터가 더 나올수도 있는 구조 군요..
섣불리 답변을 내어 죄송합니다..ㅠ..ㅠ

by 문두 [2010.11.11 13:14:43]
SELECT DISTINCT
RTID
, A.STNID
, A.FCLTKEY
, A.ORD
, A.USEYN
, DECODE (B.PRJSTEP, '5', '5', '0') AS PRJSTEP --참조
FROM BIBIT.TN_FACILITY B
, BIBIT.TH_FACILITY_ROUTE_MAPNG A
WHERE A.FCLTKEY = B.FCLTKEY
AND ( A.RTID, A.STNID, A.UPDATEDT ) IN (
SELECT RTID
, STNID
, MAX(UPDATEDT)
FROM BIBIT.TH_FACILITY_ROUTE_MAPNG
WHERE UPDATEDT <= TO_CHAR (SYSDATE - 1, 'yyyymmddhh')
AND FCLTKEY LIKE 'BIT%'
GROUP BY RTID, STNID
)
댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입