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

SQL Oracle Discussion :

Aide sur une commande order by


Sujet :

SQL Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Formateur en informatique
    Inscrit en
    Septembre 2013
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Formateur en informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2013
    Messages : 25
    Par défaut Aide sur une commande order by
    bonjour,
    j'ai un soucis avec cette requête sql
    sans la commande order by elle s’exécute en 3s
    avec la commande order by 38s

    et je ne trouve pas comment optimiser le cout du oder by ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    select 
     
    L.TAXE_PORTDU as taxeportdu
     
    from VW_TRANSBIS_KEYS T
    INNER JOIN LIGCOMM L
    ON (L.NO_LIGNE_COMMANDE=T.NLIGNECOMMANDE and L.AGENCE=T.AGENCE)
    LEFT OUTER JOIN SERVICE_ADMINCLI S
    ON ( T.CODECLIENT= S.CODE_CLIENT 
    AND S.SERVICE_ADMIN= 'FACTUMAIL')
    left outer join client cli
    on T.CODECLIENT=CLI.CODE_CLIENT
    LEFT OUTER JOIN PAYS PAYS
    ON CLI.PAYS_CLIENT=PAYS.CODE_PAYS
    left outer join VWT_DETAILTARIFC c
    on(c.NO_LIGNE_COMMANDE=T.NLIGNECOMMANDE)
    LEFT OUTER JOIN FACTURE F 
    ON (F.NO_FACTURE = T.NFACTURECLIENT AND 
    T.AGENCEFACTURECLIENT = F.CODE_AGENCE)
    LEFT OUTER JOIN VW_TRANSBIS_DETFACT VF
    ON (VF.NFACTURECLIENT = T.NFACTURECLIENT AND 
    t.agencefactureclient = vf.agencefactureclient)
    left outer join CLIENT CLI2 
    on (CLI.champs6 = cli2.code_client)
    LEFT OUTER JOIN PAYS PAYS2
    ON CLI2.PAYS_CLIENT=PAYS2.CODE_PAYS
    left outer join W_PARAM_CHAMPS WPC
    on(WPC.CHAMPS_NAME='CHAMPS8'and 
    WPC.TABLE_NAME='LIGCOMM' and 
    WPC.CHAMPS_VALEUR=L.CHAMPS8)
    order by T.NLIGNECOMMANDE

  2. #2
    Membre Expert
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Avril 2013
    Messages
    2 005
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Avril 2013
    Messages : 2 005
    Par défaut
    Quand tu fais un ORDER BY, Oracle a une tâche en plus qui est de trier les données; forcément cela a un coût.
    Néanmoins, dans certains cas, le ORDER BY peut accélérer les SELECT (si si ) mais c'est rare et visiblement tu n'es pas dans ces cas.

    Ce qui serait bien, c'est de nous sortir le résultat de la commande AUTOTRACE de ta requête, d'abord sans ORDER BY puis avec ORDER BY pour qu'on y voit plus clair.

  3. #3
    Expert confirmé
    Profil pro
    Inscrit en
    Août 2008
    Messages
    2 954
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 2 954
    Par défaut
    Je ne comprends pas la requête, vous ne sélectionnez que L.TAXE_PORTDU ? Mais vous triez sur T.NLIGNECOMMANDE ?
    Si c'est le cas, je pense que les LEFT JOIN sont inutiles.

  4. #4
    Membre Expert
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Avril 2013
    Messages
    2 005
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Avril 2013
    Messages : 2 005
    Par défaut
    Ce n'est pas bête du tout, du moins si ça correspond au besoin : la seule donnée qui l'intéresse est L.TAXE_PORTDU triée par T.NLIGNECOMMANDE.
    Dans ce cas, pas la peine d'afficher T.NLIGNECOMMANDE car non seulement ça va augmenter la quantité de données à envoyer via le réseau et en plus cette donnée ne sera pas exploitée plus tard donc perdue : du gâchis.

    [MON MILLIEME POST]


    Petit DBA est devenu GRAND DBA

  5. #5
    Expert confirmé
    Profil pro
    Inscrit en
    Août 2008
    Messages
    2 954
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 2 954
    Par défaut
    Citation Envoyé par Ikebukuro Voir le message
    Ce n'est pas bête du tout, du moins si ça correspond au besoin : la seule donnée qui l'intéresse est L.TAXE_PORTDU triée par T.NLIGNECOMMANDE.
    Dans ce cas, pas la peine d'afficher T.NLIGNECOMMANDE car non seulement ça va augmenter la quantité de données à envoyer via le réseau et en plus cette donnée ne sera pas exploitée plus tard donc perdue : du gâchis.
    Je n'ai pas dit que c'était bête, je remets en cause la pertinence des jointures externes dans le cas présenté

  6. #6
    Membre averti
    Homme Profil pro
    Formateur en informatique
    Inscrit en
    Septembre 2013
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Formateur en informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2013
    Messages : 25
    Par défaut
    merci beaucoup pour vos réponse, désolé pour ma réponse tardive.

Discussions similaires

  1. Besoin d'aide sur une commande
    Par debutant75013 dans le forum Linux
    Réponses: 8
    Dernier message: 23/02/2010, 19h15
  2. Réponses: 6
    Dernier message: 18/06/2009, 22h25
  3. aide sur une commande
    Par xoum89 dans le forum SQL
    Réponses: 6
    Dernier message: 06/05/2009, 19h39
  4. [LG]plantage sur une commande basique !
    Par Jeff on the web dans le forum Langage
    Réponses: 5
    Dernier message: 13/01/2004, 19h07
  5. Aide sur une fenetre
    Par Ray-j dans le forum Autres éditeurs
    Réponses: 4
    Dernier message: 29/11/2002, 08h51

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