Bonjour,
j'ai les tables suivantes :
T1
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 ID DATE_I DATE_F T Q R 1 31/10/08 25/11/08 2 20 17 1 26/11/08 26/11/08 2 17 20 ...
T2
je ne voudrais que les lignes de la table T1 qui ne sont pas présentent dans la table T2 pour les même valeurs des champs ID, DATE_I et DATE_F. Donc dans mon exemple n'avoir que la ligne
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 ID DATE_I DATE_F T Q R 1 31/10/08 25/11/08 2 20 20 ...
j'ai donc fais la commande suivante :
Code : Sélectionner tout - Visualiser dans une fenêtre à part 1 26/11/08 26/11/08 2 17 20
et même
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 select * from T1 where (ID, DATE_I, DATE_F) not in (select ID, DATE_I, DATE_F from T2)
mais avec des tables de plus de 10 millions de lignes je n'arrive a avoir des résultats qu'après 1h...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 select t1.* from t1 left outer join t2 on t1.ID = t2.ID and t1.DATE_I = t2.DATE_I and t1.DATE_F = t2.DATE_F where t2.ID is NULL
j'indiquerai juste qu'il y a des indexes sur les champs ID mais pas sur les champs DATE_I et DATE_F car cela allourdi encore plus le traitement si j'en met sur ces champs.
Quelqu'un aurait-il une solution ?
Partager