2013-10-03 3 views
1

아래 Teradata 쿼리를 완료하는 데 약 18 초가 소요됩니다. IN 절에 전달 된 강조 표시된 값이 다른 Oracle 데이터베이스의 값이므로 해당 테이블과 조인을 구현할 수 없습니다. 1000 개 이상의 기록, 내가 을 다음과 같이 IN 절을 구현하고 (다음 999 recods에서 ((첫번째 999 recods에서 sec.SerialNum) 또는 sec.SerialNum입니다) ... 또는 초이있는 경우 또한IN 절에 대한 SQL 조정

SELECT distinct sec.SerialNum esn, ef.EngineFamilyCd family, em.EngineModelCd model, 
es.EngineSeriesCd series, sac.AircraftTailNum tailNumRef, sec.EnginePositionNum enginePosition, 
o1.OrganizationId ownerOrgId, o2.OrganizationId operatorOrgId, 
sec.EngineInstallationDttm installedDate, sec.EngineRemovalDttm removalDate, 
sec.HardwareConfigNm hardwareConfig, sec.EngineControlNm engineControl, 
sec.ApplicationSelectorNm appSelector, sec.EngineMonitorInd engineMonitorInd, 
sec.EngineThrustRatingFctr engineThrustRating, sec.StatusDesc engineStatus, sec.n1modifiernum n1modifier 
FROM DB_MASTER_BV.SZEngineCurrent sec, 
DB_MASTER_BV.EngineSeries es, 
DB_MASTER_BV.EngineModel em, 
DB_Master_BV.EngineFamily ef, 
DB_MASTER_BV.SZAircraftCurrent sac, 
DB_MASTER_BV.Organization o1, 
DB_MASTER_BV.Organization o2 
WHERE sec.EngineSeriesCd = es.EngineSeriesCd 
and es.EngineModelCd = em.EngineModelCd 
and em.EngineFamilyCd = ef.EngineFamilyCd 
and sec.MasterAircraftId = sac.MasterAircraftId 
and o1.MasterOrganizationId = sec.OwnerMasterOrganizationId 
and o2.MasterOrganizationId = sec.OperatorMasterOrganizationId 
AND (sec.SerialNum in('733276','193283','690168','741471','876374','873383','193386','906397','804314','900116','785670','900399','724321','193488','811373','779917','193699','994688', 
'779410','575169','A59299','900206','193297','575484','896359','367230','810105','876485','906385','876484','707149','811222','706801','193596','731949','697881', 
'889697','804626','575194','707159','706129','900230','900231','706834','811352','900229','785748','193460','888221','906272','906266','906264','906263','994356', 
'194431','731966','892417','811341','577413','741572','575564','889262','706956','876157','900257','900153','706958','706957','960436','892429','892427','900354', 
'697138','645655','193352','994337','707189','697833','959190','900246','811317','577437','193643','697976','890692','193229','965579','900137','900135','894897', 
'697723','193363','193367','785505','907077','959184','811311','706526','577302','706529','994332','702792','706663','779834','731931','960127','193371','876183', 
'741563','193235','803843','577320','994318','907087','741460','907086','959170','994462','900464','193626','877503','643711','811202','811201','704585','193504', 
'193500','875246','704876','725834','699783','699780','802380','900304','706885','906191','577773','959152','872574','811435','697388','699381','892485','577698', 
'907035','811445','907039','894999','894857','894595','697273','894597','959139','577894','874898','706959','900424','193337','577697','907011','875696','699555', 
'699554','575629','906149','906150','193452','962968','811264','811266','962970','875395','699543','575638','906153','857962','896247','858349','779746','906161', 
'906928','802857','779640','193424','550309','424520','550305','575608','872517','906169','892196','811386','811385','906173','907220','959234','876666','959231', 
'876662','893785','875914','802649','550218','550315','906111','741984','550319','906405','906501','550118','643371','785254','550116','550117','802946','906629', 
'907145','550325','550324','906837','550320','906838','702591','550220','550227','906415','690289','906517','704416','731431','550125','959201','906413','994176', 
'550333','550140','550337','891651','550141','550338','906746','907269','550132','550137','550138','892914','550342','906123','550153','550345','950923','906129', 
'873188','906850','906953','690270','890713','645352','893127','697590','874826','424439','893126','907110','550144','856305','690269','892824','550256','550257', 
'906867','907186','960852','720754','960851','906866','888607','805573','811530','960756','872352','550266','550267','550264','811518','888896','906730','994958', 
'892247','960970','875186','906987','424124','550232','A59303','702660','875885','811609','888626','424219','906897','994981','731502','697496','695345','962996', 
'894371','907153','805541','907154','424337','906613','906615','900512','906610','956141','994611','804582','994718','888648','575219','888756','896973','424395', 
'872117','A59227','697616','731380','697614','900161','690410','994213','956155','956154','779492','994231','702876','577248','994727','193818','890879','722243', 
'906499','577354','888560','645121','896972','960823','804279','900175','888853','193724','550285','550282','906469','994803','906466','888299','877141','890984', 
'695688','994533','888327','A59348','A59346','994410','733116','550296','550290','550292','906478','731763','725658','896408','645145','994751','731654','740358', 
'906441','550158','193849','906543','906448','994262','575824','424186','906345','643663','888305','906243','906244','702963','906453','906452','956119','906451', 
'956116','950489','550166','906454','367457','896764','575833','994268','906252','994127','733236','906258','956123','550178','994777','956126','956127','956128', 
'906786','906788','906687','643290','994631','956225','994632','888574','906365','804228','731599','643682','550182','804369','994784','550186','550183','888826', 
'575127','906439','890482','906438','906691','890472','994509','193147','575718','804215','575276','994793','897257')) 
and END(sec.EngineValidPd) is until_changed 
order by esn 

. (나머지 recods)에가 SerialNum는) 는 위의 질의보다 빠른 것 어느 IN 절

+4

당신은 같은 쿼리를 생성 할 수 있다면 위에서 Oracle 데이터베이스의 데이터에서 SerialNum의 내부를 임시 테이블에 Teradata 데이터베이스에 넣은 다음 임시 테이블에 대한 조인으로 쿼리를 수행하는 것이 어떻습니까? – Dan

+0

이 방법은 확장 가능하지 않으며 결국에는 문제가 발생할 수 있습니다. Dan과 함께이 값들을 Teradata의 임시 테이블에로드해야한다는 데 동의합니다. –

답변

1

당신의 테라 데이타 자료는 무엇에 1000 개 이상의 레코드 문제가 발생하지 않습니다 솔루션을 제안하세요? TD14에서

값의 문자열을 분할 내장 테이블 함수가, 당신은 단순히 하나의 문자열 내의 모든 값을 전달할 수 있습니다 :

AND sec.SerialNum IN 
(
    SELECT token 
    FROM TABLE (STRTOK_SPLIT_TO_TABLE(1, '733276,193283,690168,741471,876374', ',') 
     RETURNS (outkey INTEGER, 
       tokennum INTEGER, 
       token VARCHAR(20) CHARACTER SET UNICODE) 
      ) AS d 
) 
관련 문제