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
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
...
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	26/11/08	26/11/08	2	17	20
j'ai donc fais la commande suivante :

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)
et même

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
mais avec des tables de plus de 10 millions de lignes je n'arrive a avoir des résultats qu'après 1h...

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 ?