Précédent   Forum des professionnels en informatique > Bases de données > Firebird > SQL
SQL Forum d'entraide sur le SQL pour Firebird
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 12/11/2007, 11h45   #1
Membre habitué
 
Inscription : mai 2005
Messages : 258
Détails du profil
Informations forums :
Inscription : mai 2005
Messages : 258
Points : 116
Points : 116
Par défaut index non pris en compte dans inner select

Bonjour,

je viens vers vous car j'ai un petit soucis...

j'ai la simple requête suivante

Code :
SELECT * FROM COMPTE WHERE ID NOT IN (SELECT COMPTE_ID FROM FACT_COMPTE)
les champs ID de la table COMPTE et COMPTE_ID de la table FACT_COMPTE sont indéxés.

En Firebird 1.5, cela prend quelques millisecondes.

en firebird 2.0, cela prend un temps monstreux.

Après vérification, je remarque que Firebird 2 n'utilise pas les index. Les deux DB sont des copies conformes.

Pourquoi Firebird 2 n'utilise pas les index? (j'ai détruit et recréé les index pour être sûr)

Comment faire pour qu'il le fasse (comme Firebird 1.5 le faisait).

Merci d'avance
eponette est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/11/2007, 12h42   #2
Expert Confirmé

 
Homme Philippe Makowski
Consultant spécialité Firebird
Inscription : mai 2002
Messages : 2 215
Détails du profil
Informations personnelles :
Nom : Homme Philippe Makowski
Âge : 49
Localisation : France

Informations professionnelles :
Activité : Consultant spécialité Firebird
Secteur : Conseil

Informations forums :
Inscription : mai 2002
Messages : 2 215
Points : 3 318
Points : 3 318
Solution : lire les notes de versions, c'est là pour cela

Performance
The following changes should be noted as possible sources of performance loss:
Existence Predicates NOT IN and ALL May Be Slow
Firebird and, before that, InterBase, have produced incorrect results for the logical existence predicates ALL
and NOT IN for many years. That problem has bee corrected in Firebird 2.0, but the change means that
indexes on the inner tables cannot be used and performance may be slow compared to the same query's
performance in V.1.5. “Inner tables” are the tables used in the subquery argument inside an ALL or NOT IN expression.
Note
NOT EXISTS is approximately equivalent to NOT IN and will allow Firebird to use indexes.
__________________
Philippe Makowski
IBPhoenix - Firebird
Membre de l'April
makowski est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/11/2007, 12h47   #3
Membre habitué
 
Inscription : mai 2005
Messages : 258
Détails du profil
Informations forums :
Inscription : mai 2005
Messages : 258
Points : 116
Points : 116
Je l'ai lu puis oublié...

Merci pour l'info.
eponette est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 05h00.


 
 
 
 
Partenaires

Hébergement Web