IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage SQL Discussion :

Grosse jointure versus subselect dans select ?


Sujet :

Langage SQL

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 12
    Points : 5
    Points
    5
    Par défaut Grosse jointure versus subselect dans select ?
    Bonjour,
    J ai besoin d ecrire une requête SQL sur une grosse table, avec des jointures sur d autres tables de taille plus réduite.
    Je vois a priori 2 possibilités :

    Soit je limite ma recherche a ma seule grosse table, et je sollicite ensuite mes petites tables avec des subselect dans mon select.
    Exemple :

    select (select tmp1.libelle1 from MaPetiteTable tmp1 where tmp1.id=t.id) "Libellé 1",
    (select tmp2.libelle2 from MaTableAMoi tmp2 where tmp2.id=t.id) "Libellé 2",
    (select tmp3.libelle3 from MaTable tmp3 where tmp3.id=t.id) "Libellé 3",
    (select tmp4.libelle4 from MyTinyTable tmp4 where tmp4.id=t.id) "Libellé 4"
    from MaGrosseTable t
    where t.pouet='turlututu';


    Soit je fais une bonne grosse jointure entre tout ca, au risque de faire des table acessfull, mais y a pas de subselect

    select tmp1.libelle1 "Libellé 1",
    tmp2.libelle2 "Libellé 2",
    tmp3.libelle3 "Libellé 3",
    tmp4.libelle4 "Libellé 4"
    from MaGrosseTable t,
    MaPetiteTable tmp1,
    MaTableAMoi tmp2,
    MaTable tmp3,
    MyTinyTable tmp4
    where tmp1.id=t.id and
    tmp2.id=t.id and
    tmp3.id=t.id and
    tmp4.id=t.id and
    t.pouet='turlututu';


    Y a une solution meilleure que l autre ou il vaut mieux etre empirique, à savoir que la meilleure solution est celle qui retourne le résultat le plus vite ?
    Est-ce que la meilleure solution peut dépendre du nombre de lignes retournées via la wherclause pouet ?

  2. #2
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 12
    Points : 5
    Points
    5
    Par défaut
    pas d'avis ?

  3. #3
    Xo
    Xo est déconnecté
    Expert confirmé
    Avatar de Xo
    Inscrit en
    Janvier 2005
    Messages
    2 701
    Détails du profil
    Informations personnelles :
    Âge : 51

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 701
    Points : 4 238
    Points
    4 238
    Par défaut
    Salut,

    As-tu fait des tests ? Il me semble que des jointures bien contruites seraient plus judicieuses que des sous-requêtes.


    A propos, si ton SGBD l'accepte, n'hésite pas à transformer tes jointures dans la clause WHERE en INNER JOIN (cf ce cours : Les jointures, ou comment interroger plusieurs tables)

Discussions similaires

  1. procedure dans select
    Par RSBMW dans le forum Langage SQL
    Réponses: 4
    Dernier message: 05/10/2005, 17h07
  2. Jointure VS Subselect
    Par dervish dans le forum Requêtes
    Réponses: 2
    Dernier message: 06/09/2005, 13h57
  3. Lien dans select
    Par LeDoc dans le forum Balisage (X)HTML et validation W3C
    Réponses: 7
    Dernier message: 02/08/2005, 11h39
  4. Jointure de 2 blocs select
    Par lious dans le forum Langage SQL
    Réponses: 18
    Dernier message: 19/08/2004, 10h44
  5. Ajout de critères dans Select utilisé par xp_sendmail
    Par bd0606 dans le forum MS SQL Server
    Réponses: 8
    Dernier message: 28/05/2004, 17h02

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo