|
|||||||
| InterBase Forum d'entraide sur le SGBD InterBase de Codegear. Avant de poster -> F.A.Q Interbase, Tutoriels |
|
|
Publicité ' | |||||||||||||||||
|
|
|
Outils de la discussion |
|
|
#1 |
|
Invité régulier
![]() Inscription : juillet 2002 Messages : 12 ![]() |
Bonjour,
Interbase met un temps fou SELECT * FROM A WHERE (A.PK IN (SELECT b.champ1 FROM B WHERE b.champ2>0)) ORDER BY b.champ3; J'ai mis un index sur chacun des champs cités et ça ne va pas mieux. Comment faire des requêtes imbriquées sous interbase? (NB : Avec ACCESS, je n'ai pas rencontré ce problème mais je m'y prends certainement mal avec interbase merci |
|
|
00
|
|
|
#2 |
|
Invité de passage
![]() Inscription : mars 2002 Messages : 2 ![]() |
Je rencontre exactement le même problême. Néanmoins lorsque je peux utiliser une jointure inner join (par exemple, si "A.PK=b.champ1"), j'obtiens des délais de réponses satisfaisant.
|
|
|
00
|
|
|
#3 |
|
Candidat au titre de Membre du Club
![]() Inscription : août 2002 Messages : 24 ![]() |
ëssaye :
SELECT * FROM A WHERE EXISTS (SELECT b.champ1 FROM B WHERE b.champ2>0 AND A.pk =b.champ1); j'ai pas compris pourquoi t'utilisais un order by sur la table B! Un exists est plus performant que IN, lorsque que dans cet exemple, exists trouve un enregistrement qui b.champ>0 et a.pk=b.champ1, le exists s'arrête, tandis que le IN continue jusqu'à la fin de la table B Si il y a quelqu'un qui peut m'expliquer cette différence d'interruption de traitement, qu'il le dise |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com