Bonjour, je rencontre de sérieux problèmes de performance en effectuant les requêtes suivantes :
Pour schématisé, disons que je possède deux tables :
A1,B1,C1 sont des champs de clés étrangères correspondants respectivement aux champs A,B,C. J'aimerais faire les lignes dans table2 non présentes dans table1 : je fait donc un minus :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 table1 (champs : A,B,C,X) table2 (champs : A1,B1,C1)
Pour chaque ligne j'aimerais aussi récupéré le champ X. Donc pour cela j'effectue une nouvelle requête sur le résultat de l'étape précédente :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 select A,B,C from table1 MINUS select A1,B1,C1 from table2
Le problème et que cette étape prend plus de temps : ma requête passe de 1s à 6sec d'exécution : je voulais savoir s'il était possible de changer mon minus pour n'effectuer qu'un seul passage au lieu d'utiliser une sous-requête.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 select X,A,B,C from table1, ( select A,B,C from table1 MINUS select A1,B1,C1 from table2 ) ...
J'espère que cela était clair.
Pour info : je travailles avec une base Oracle 10g
Merci d'avance pour votre retour.
Partager