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 :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
 table1 (champs : A,B,C,X)
 table2 (champs : A1,B1,C1)
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
3
 select A,B,C from table1 
 MINUS
 select A1,B1,C1 from table2
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
4
5
6
select X,A,B,C from table1,
(
  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.

J'espère que cela était clair.
Pour info : je travailles avec une base Oracle 10g

Merci d'avance pour votre retour.