2017-10-16 17 views
0

Je suis en train de réaliser la andsession de requête suivante obtient avorté après ~ 1,5 heures de traitement:Teradata: séance interrompue en raison de la requête unoptimal

create volatile table test2 as 
(
select 
    a.*, 
    b.client_dk 
from test1 as a 
inner join payroll_clients as b 
    on a.payroll_agrmnt_id = b.lbt_lst_payroll_agrmnt_id 
) 
WITH DATA 
    ON 
COMMIT PRESERVE ROWS; 

Table test1 contient ~ 1500 lignes, payroll_agrmnt_id est unique .

Table payroll_clients contient ~ 151 millions lignes (oui beaucoup), client_dk est unique

Qu'est-ce que je fais mal?

p.s .: ajouté "table de salon" pour les deux tables:

show table payroll_clients; 

CREATE SET VOLATILE TABLE "PAVLENKO-GA".payroll_clients ,NO FALLBACK , 
    CHECKSUM = DEFAULT, 
    DEFAULT MERGEBLOCKRATIO, 
    LOG 
    (
     client_dk BIGINT, 
     lbt_lst_payroll_agrmnt_id BIGINT) 
PRIMARY INDEX (client_dk ,lbt_lst_payroll_agrmnt_id) 
ON COMMIT PRESERVE ROWS; 



show table test1; 

CREATE SET VOLATILE TABLE "PAVLENKO-GA".test1 ,NO FALLBACK , 
    CHECKSUM = DEFAULT, 
    DEFAULT MERGEBLOCKRATIO, 
    LOG 
    (
     INN FLOAT, 
     DOG_NUM FLOAT, 
     payroll_agrmnt_id BIGINT) 
PRIMARY INDEX (payroll_agrmnt_id) 
ON COMMIT PRESERVE ROWS; 
+0

pouvez-vous s'il vous plaît élaborer plus sur les Datamodels (DDL) pour les deux tables –

+4

Savez-vous * pourquoi * il a été avorté? Ce n'est probablement pas à cause de trop de Spool/CPU/IO, mais en raison d'un mauvais Index Primaire de la table cible, vous ne l'avez pas spécifié et donc par défaut 'PAVLENKO-GA.a.INN'. Je suppose que cette colonne entraîne une très mauvaise distribution et que votre table est s SET table = Duplicate Row checks. Essayez un PI sur 'client_dk'. – dnoeth

+0

Bonjour Aritra, ajouté dans le message original, s'il vous plaît jeter un oeil –

Répondre

0

La solution a été fournie par @dnoeth - index primaire doit être défini pour la table cible. Thx