Jointure entre trois tables via SQL Developer
Bonjour la communauté,
J'ai trois tables avec des millions d'enregistrements.
J'essaie de faire une requête en jointure simple pour regrouper différentes informations des employés en me basant sur les conditions suivantes :
- e.emp_NUMDOS - numéro dossier de l'employé de la table "employee"
- t.tr_MANUMDOS - numéro dossier de l'employé de la table "travel"
- e.emp_NOM1 - nom de l'employé de la table "employee"
- e.emp_PRENOM - prénom de l'employé de la table "employee"
- f.fl_BENNOM - nom de l'employé de la table "fly"
- f.fl_BENPRE - prénom de l'employé de la table "fly"
Le souci, la requête tourne pendant longtemps (1h45) et je suis obligé de l'annuler car on note des ralentissements dans les applications.
Comment puis-je améliorer ma requête pour réduire la durée d’exécution et rapatrier les infos.
Merci d'avance.
Cordialement.
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
| SELECT (e.employee_PK_ID),(t.travel_PK_ID),(f.fly_PK_ID),
e.emp_NOM1,
e.emp_PRENOM,
e.emp_NOM2,
e.emp_IDENT,
e.emp_DATENAI,
e.emp_SEXE,
f.fl_ASSNUM,
f.fl_CPAM,
f.fl_CPAMCLE,
t.tr_NUM,
t.tr_RECODE,
t.tr_PGSCODE,
e.emp_DATENT,
t.tr_DDEB,
t.tr_DFIN,
t.tr_DEJFAC,
t.tr_PRESENT,
e.emp_CODECES,
t.tr_DATCRE,
t.tr_VALID
FROM employee e, travel t, fly f
WHERE e.emp_NUMDOS = t.tr_MANUMDOS
AND t.tr_RECODE = 'HEPH'
AND e.emp_NOM1 = f.fl_BENNOM
AND e.emp_PRENOM = f.fl_BENPRE
ORDER BY e.emp_NOM1; |
Jointure entre trois tables via SQL Developer
Bonjour,
J'ai fais le plan d’exécution, mais étant donné que j'avais changé les noms des tables et des colonnes dans mon post(CAR S'AGISSANT DE DONNÉES EXTRÊMEMENT CONFIDENTIELLES), le résultat serait illisible.
table fly:
clé primaire: f.fly_PK_IDindex:
fl_ENVOI, fl_HONUM, fl_ENRNUM, MAI_POOL_ID
table travel: je m'excuse mais c'est plutôt une vue
clé primaire:
tr_MANUMDOS
clé etrangere:
emp_NUMDOS
index:
tr_NUM
table employee
clé primaire:
emp_NUMDOS
clé etrangere:
tr_MANUMDOS
index:
emp_NUMDOS
j’espère qu'avec ces quelques infos en plus, vous pourrez me donner un bout de piste.
Merci d'avance.
Cordialement.