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 :

Besoin d'aide pour requête sur grosse table


Sujet :

Langage SQL

  1. #1
    Fabouney
    Invité(e)
    Par défaut Besoin d'aide pour requête sur grosse table
    Bonsoir à tous et à toute,

    je vais essayer d'etre le plus clair possible.

    j'ai 4 tables :

    www_books : stock ouvrages de littérature (900 000 enregistrement)
    www_cat : contient les catégories, qui comprenne plusieurs ouvrages chacunes (ex : "art & civilisation" , "romans" ).
    www_general : contient les ID des cat générales, qui contiennet des ss catégorie (www_cat)
    www_abs : contient les résumé des ouvrages (table séparé car un livre peut faire parti de plusieurs librairies, et donc avoir un résumé différent, elle comprend a peu pret 28000 enregistrement)

    le champ art_id est la clé primaire de la table : www_books, www_cat, www_abs

    mon but étant de faire une requête qui sélectionne les livres ainsi que leur résumé (qu'il en ai ou pas) d'une certaine catégorie.

    il se trouve qu'ici faire une jointure entre la table www_abs et www_books, est non seulement suicidaire au niveau du temps d'exécution, mais en plus ne répondrai pas mon attente, puisse que la table www_abs contient les livre ayant un résumé, or moi il serait bien de récupéré les livre de la catégorie concerné qu'il est un livre ou pas.

    donc j'avais commencé à faire une requete imbriqué qui, déjà récupéré les bouquins de la catégorie que je souhaitais, pas eu de problème pr cela.


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    select b.art_id from www_books as b 
    where b.art_id IN 
           ( select art_id 
             from www_books, www_general g, www_cat c 
             where c.cont_cat_top_id = g.gen_chapid_impress 
           )
    donc la je récupére bien les livre de la catégorie que je veux, assez rapidement meme, mais now j'aimerais savoir comment m'y prendre pour aller chercher le résumé de chacun de ces livre, en optimisant au maximum le temp de traitement, et en éliminant les éventuels doublons qui pourrait survenir si un livre est ds plusieur librairies.

    merci bcp, demander des précision si c pas très clair.

    a bientot

  2. #2
    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 Re: Besoin d'aide pour requête sur grosse table
    Merci de préciser le SGBD utilisé SVP,

    Citation Envoyé par Fabouney
    il se trouve qu'ici faire une jointure entre la table www_abs et www_books, est non seulement suicidaire au niveau du temps d'exécution, ...
    Pourquoi ?

    Citation Envoyé par Fabouney
    mais en plus ne répondrai pas mon attente, puisse que la table www_abs contient les livre ayant un résumé, or moi il serait bien de récupéré les livre de la catégorie concerné qu'il est un livre ou pas.
    Il suffit de faire une jointure externe donc. cf http://sql.developpez.com/sqlaz/jointures/#L2.3

    Citation Envoyé par Fabouney
    donc j'avais commencé à faire une requete imbriqué qui, déjà récupéré les bouquins de la catégorie que je souhaitais, pas eu de problème pr cela.


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    select b.art_id from www_books as b 
    where b.art_id IN 
           ( select art_id 
             from www_books, www_general g, www_cat c 
             where c.cont_cat_top_id = g.gen_chapid_impress 
           )
    Ta sous requête contient 3 tables et une seule clause de jointure, en particulier il n'y a aucune jointure avec la table www_books, donc je pense que tu obtiens un produit cartésien ...

    En outre, j'ai beaucoup de mal à imaginer que passer par une sous requête donne des résultats plus performants qu'avec une jointure classique ???

  3. #3
    Fabouney
    Invité(e)
    Par défaut
    c'est vrai tu as raison que je gagne pas plus de temp ave cune requete imbriqué, mais c'est seulement la jointure entre la table www_abs et la table www_books, sinon je suis sous db2.

    tu me demande pourquoi concernant la jointure, bah tout simplemenbt parceque joindre l'art_id de la table www_books qui contient 900 000 enregistrement et la table www_abs, bah le temp de traitement est bcp trop long.

    mais je vais jeter un oeil sur les jinture externe, je crois que j'avais déjà essayé, en effet ca marché bien, mais j'avais un probleme avec les doublons, malgré les condition que je rajoutais.

  4. #4
    Fabouney
    Invité(e)
    Par défaut
    bonjour,

    j'ai effectué cette requête :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    select distinct b.art_id,abs 
    from www_books b LEFT OUTER JOIN www_abs abs ON b.art_id = abs.art_id and (abs_librairie = 'libsav' or abs_librairie = '' or abs_librairie = 'biblioteca') 
    where b.art_id IN 
    	( 
    	select art_id 
    	from www_cat c, www_general g 
    	where cont_cat_top_id = gen_chapid_impress 
    	) 
    and vignette = 'O'
    mise à part que j'ai des doublons concernant les ouvrage qui ont un résumé un peu différent s'il font partie de la librairie libsav et biblioteca, comment je pourrais faire pour éliminer ces doublons.

Discussions similaires

  1. [WB17] Besoin d'aide pour code sur requête et zone répétée
    Par newbieWeb dans le forum WebDev
    Réponses: 2
    Dernier message: 23/05/2015, 11h38
  2. Besoin d'aide pour des jointures de tables
    Par supersmoos dans le forum Requêtes
    Réponses: 4
    Dernier message: 14/12/2006, 15h38
  3. Besoin d'aide pour requête SQL
    Par vallica dans le forum Requêtes
    Réponses: 10
    Dernier message: 08/06/2006, 23h16
  4. Besoin d'aide pour un MCD des tables de la BDD
    Par nicaud dans le forum Schéma
    Réponses: 3
    Dernier message: 23/04/2006, 10h34
  5. aide pour requete sur 2 tables avec clé étranere
    Par richton95 dans le forum Requêtes
    Réponses: 4
    Dernier message: 02/12/2005, 13h32

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