Euh... L'optimiseur est bien, mais faut pas pousser non plus, la première solution, je vois ça dans du code, je quite l'éditeur et je del le fichier, ça sera plus rapide de repartir de rien que d'un code aussi propre que des chiottes publiques.
Sous Oralce
Exemple :
select count(*) from tie
48649 lignes
select * from tie
where codsoc = 0
and typtie = 'CLI'
and posfis = 'A'
78 ms
select * from tie
where codsoc = 0
and typtie = 'REP'
and famtie = 'REP'
and posfis = 'A'
and codzn4 = 'FR'
328 ms
select * from tie
where codsoc = 0
and typtie = 'CLI'
and posfis = 'A'
and sigrep in (select sigtie from tie
where codsoc = 0
and typtie = 'REP'
and famtie = 'REP'
and posfis = 'A'
and codzn4 = 'FR')
774 ms
select t1.* from tie t1, tie t2
where t2.codsoc = 0
and t2.typtie = 'REP'
and t2.famtie = 'REP'
and t2.posfis = 'A'
and t2.codzn4 = 'FR'
and t1.codsoc = 0
and t1.typtie = 'CLI'
and t1.posfis = 'A'
and t1.sigrep = t2.sigtie
94 ms
|
=> La jointure est plus rapide que chacune des deux requête à la suite. Alors je te parle même pas de la solution batarde de sous-requête...
Message édité par MagicBuzz le 02-07-2003 à 15:26:52