Précédent   Forum des professionnels en informatique > Bases de données > PostgreSQL
PostgreSQL Forum PostgreSQL. Avant de poster -> F.A.Q PostGreSQL Tutoriels PostGreSQL
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 14/08/2007, 15h01   #1
Membre habitué
 
Inscription : mai 2002
Messages : 635
Détails du profil
Informations forums :
Inscription : mai 2002
Messages : 635
Points : 109
Points : 109
Par défaut conseil pour une requete sql

Bonjour,

Je sollicite un petit conseil sur une requête.

Je voudrai sélectionner tous les inscrits présents dans une table A mais qui ne sont pas dans la table B. Est-ce que cette requête est la plus optimisée :

SELECT inscrit_id FROM table_A WHERE inscrit_id NOT IN (SELECT inscrid_id FROM table_B)

Merci à tous
viny est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/08/2007, 15h15   #2
Membre actif
 
Avatar de budtucker
 
Développeur multimédia
Inscription : avril 2007
Messages : 175
Détails du profil
Informations professionnelles :
Activité : Développeur multimédia

Informations forums :
Inscription : avril 2007
Messages : 175
Points : 174
Points : 174
C'est ce que j'aurais fait.
budtucker est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/08/2007, 23h22   #3
Membre éclairé
 
Avatar de icer
 
Inscription : janvier 2006
Messages : 332
Détails du profil
Informations forums :
Inscription : janvier 2006
Messages : 332
Points : 308
Points : 308
+1
Je ne vois pas comment l'optimiser plus que ça.
icer est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/08/2007, 16h38   #4
Membre éclairé
 
Inscription : janvier 2005
Messages : 336
Détails du profil
Informations personnelles :
Âge : 34

Informations forums :
Inscription : janvier 2005
Messages : 336
Points : 353
Points : 353
Essai ceci alors

Code :
1
2
3
4
SELECT inscrit_id 
FROM table_A A 
WHERE 
NOT EXISTS (SELECT 1 FROM table_B B WHERE B.inscrit_id=A.inscrit_id)
__________________
Christophe Chauvet (KrysKool)
kryskool est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/08/2007, 10h54   #5
Membre actif
 
Avatar de budtucker
 
Développeur multimédia
Inscription : avril 2007
Messages : 175
Détails du profil
Informations professionnelles :
Activité : Développeur multimédia

Informations forums :
Inscription : avril 2007
Messages : 175
Points : 174
Points : 174
Mais pourquoi ne pas utiliser tout de même le nom par défaut des occurences. Ne serait ce que pour prendre (ou garder) une bonne habitude ?

C'est à dire en gardant la syntaxe qu'il avait écrit ???

Quel est ton avis Kryskool ?
budtucker est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/08/2007, 00h24   #6
Membre chevronné
 
Avatar de Spoutnik
 
Homme
Inscription : octobre 2003
Messages : 668
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 32
Localisation : Etats-Unis

Informations forums :
Inscription : octobre 2003
Messages : 668
Points : 746
Points : 746
Hello,

une jointure ne serait elle pas plus rapide ? (ca m'interesse d'avoir une comparaison de perf )

Code :
1
2
3
SELECT DISTINCT A.inscrit_id 
FROM table_A A LEFT OUTER JOIN table_B B ON B.inscrit_id=A.inscrit_id
WHERE B.inscrit_id IS NULL
__________________
Two beer or not two beer. (Shakesbeer)
Question technique par MP => poubelle!
Spoutnik est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/08/2007, 08h54   #7
ced
Rédacteur/Modérateur

 
Avatar de ced
 
Homme Cédric Duprez
Inscription : avril 2002
Messages : 3 823
Détails du profil
Informations personnelles :
Nom : Homme Cédric Duprez
Âge : 36
Localisation : France, Loiret (Centre)

Informations professionnelles :
Secteur : Agroalimentaire - Agriculture

Informations forums :
Inscription : avril 2002
Messages : 3 823
Points : 6 423
Points : 6 423
+1 Spoutnik
C'est effectivement la solution la plus performante, puisqu'on ne parcours qu'une seule fois la table B...
Toute les explications d'optimisation des requêtes sont dans le tutoriel ici. Là, c'est la règle 10 dans le tableau des transformations usuelles.

ced
ced est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 04h39.


 
 
 
 
Partenaires

Hébergement Web