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 08/10/2003, 17h40   #1
Membre régulier
 
Inscription : mai 2002
Messages : 155
Détails du profil
Informations forums :
Inscription : mai 2002
Messages : 155
Points : 96
Points : 96
Par défaut Optimisation de requete

Bonjour,

Je migre une base Oracle 7.3.1 en InterBase 6.
J'aimerai savoir laquelle des requetes est la plus adaptée ou optimisée pour le moteur d'InterBase.
C'est ma premiére utilisaton d'InterBase.

Code :
1
2
3
4
5
6
 
SELECT DISTINCT DOS_CODE, DOS_MAINTENEUR, DOS_INITIATEUR, DOS_PROCODE, per_code,
A.PER_NOM||' '||A.PER_PRENOM MAINTENEUR, B.PER_NOM||' '||B.PER_PRENOM INITIATEUR 
FROM dossier, personne A,  personne B
WHERE DOS_MAINTENEUR = A.PER_CODE
AND DOS_INITIATEUR = B.PER_CODE

Code :
1
2
3
4
5
 
SELECT DISTINCT dossier.DOS_CODE, dossier.DOS_MAINTENEUR, dossier.DOS_INITIATEUR, dossier.DOS_PROCODE,personne.per_code,
personne.PER_NOM||' '||personne.PER_PRENOM MAINTENEUR ,personne.PER_NOM||' '||personne.PER_PRENOM INITIATEUR
FROM dossier INNER JOIN personne ON (personne.per_code  = dossier.dos_MAINTENEUR)
INNER JOIN personne ON (personne.per_code  = dossier.dos_INITIATEUR)
Merci d'avance

Cyril
cyril est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/10/2003, 17h52   #2
Membre du Club
 
Inscription : mars 2003
Messages : 44
Détails du profil
Informations forums :
Inscription : mars 2003
Messages : 44
Points : 44
Points : 44
sauf erreur, la 2eme. il me semble que ça fonctionne ainsi, mais je peux fort bien me planter :
la 1ere récupere toutes les lignes en faisant le produit des 2 tables avant de réduire uniquement aux lignes pertinentes. donc 2 tables de 1000 lignes -> on passe par un stade ou on a 1000000 de lignes
la 2eme ne récupere que les lignes pertinentes pour les join, avant de réduire si besoin pour la clause where.

maintenant, au dela de toute considération de rapidité, l'utilisation de join est conseillée pour une meilleure clarté de tes requetes (différenciation entre ce qui rend les données pertinentes et ce qui réduit le jeu de données uniquement aux données demandées)...
Gillou est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/10/2003, 18h38   #3
Membre Expert
 
Avatar de Barbibulle
 
Frédéric
Inscription : octobre 2002
Messages : 1 722
Détails du profil
Informations personnelles :
Nom : Frédéric
Âge : 42

Informations forums :
Inscription : octobre 2002
Messages : 1 722
Points : 2 025
Points : 2 025
D'un point de vue optimisation je ne suis pas certain qu'il y ait une différence significative (s'il y en a une je pense quelle est petite et en faveur de la 2eme).

Maintenant il est certain que la 2em est plus claire et surtout respecte la norme SQL.

Donc utiliser la 2eme représentation en prioritée.
Barbibulle est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/10/2003, 08h57   #4
Membre régulier
 
Inscription : mai 2002
Messages : 155
Détails du profil
Informations forums :
Inscription : mai 2002
Messages : 155
Points : 96
Points : 96
Re

Merci de vos conseils.

Maintenant j'ai pas mal de requetes à réécrire.

A+
Cyril
cyril 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 01h03.


 
 
 
 
Partenaires

Hébergement Web