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

MS SQL Server Discussion :

Difference entre 2 requetes


Sujet :

MS SQL Server

  1. #1
    Nouveau membre du Club Avatar de james_usus
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    103
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2004
    Messages : 103
    Points : 36
    Points
    36
    Par défaut Difference entre 2 requetes
    Je voudrais connaitre la différence entre ces deux requêtes :

    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
    IF EXISTS ( SELECT * 
    FROM Ordres Ord1
    INNER JOIN Transactions
    ON Ord1.Ref_Ordre = Transactions.Ref_Ord_Acheteur 
     
    GROUP BY Ord1.Ref_Ordre, Ord1.Volume
    HAVING Ord1.Volume < SUM ( Transactions.Volume ) ) OR
     
     
    EXISTS ( SELECT * 
    FROM Ordres Ord1
     
    INNER JOIN Transactions
     
    ON Ord1.Ref_Ordre = Transactions.Ref_Ord_Vendeur 
    GROUP BY Ord1.Ref_Ordre, Ord1.Volume
    HAVING Ord1.Volume < SUM ( Transactions.Volume ) )

    et celle ci :
    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
    IF EXISTS
    (
    SELECT 1
    FROM dbo.Ordres o
    INNER JOIN
    (
    SELECT Ref_Ord_Acheteur, SUM ( Volume ) Volume
    FROM dbo.Transactions
    GROUP BY Ref_Ord_Acheteur
    ) t ON o.Ref_Ordre = t.Ref_Ord_Acheteur
    WHERE o.Volume < t.Volume
    OR EXISTS
    (
    SELECT 1
    FROM dbo.Ordres o
    INNER JOIN
    (
    SELECT Ref_Ord_Vendeur, SUM ( Volume ) Volume
    FROM dbo.Transactions
    GROUP BY Ref_Ord_Vendeur
    ) t ON o.Ref_Ordre = t.Ref_Ord_Vendeur
    WHERE o.Volume < t.Volume
    )


    merci de me fournir des explications

  2. #2
    Membre actif
    Inscrit en
    Janvier 2012
    Messages
    145
    Détails du profil
    Informations forums :
    Inscription : Janvier 2012
    Messages : 145
    Points : 226
    Points
    226
    Par défaut
    Par explications, qu'entends tu par là?

    Plusieurs personnes pourraient peut-être te donner des indications sur le temps d’exécution, la lisibilité de la requête, son plan d'exécution, sa conformité au standards (sans objet ici)... mais il faut savoir ce que tu cherches. Au niveau de l'efficacité, je pencherais pour la 1ere qui ne fait pas intervenir de requête imbriquée.

  3. #3
    Membre chevronné

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Août 2007
    Messages
    1 216
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Suisse

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Août 2007
    Messages : 1 216
    Points : 1 758
    Points
    1 758
    Par défaut Reformulation de la question initiale
    Citation Envoyé par james_usus Voir le message
    peut on améliorer cette requête car elle est très lente :
    Voici ce que profiler révèle :

    Duration : 153258 ; CPU :19075 ; Reads: 2180629 ; Writes: 34

    IF EXISTS
    (
    SELECT *
    FROM Ordres Ord1
    INNER JOIN Transactions ON Ord1.Ref_Ordre = Transactions.Ref_Ord_Acheteur
    GROUP BY Ord1.Ref_Ordre, Ord1.Volume
    HAVING Ord1.Volume < SUM ( Transactions.Volume )
    )
    OR EXISTS
    (
    SELECT *
    FROM Ordres Ord1
    INNER JOIN Transactions ON Ord1.Ref_Ordre = Transactions.Ref_Ord_Vendeur
    GROUP BY Ord1.Ref_Ordre, Ord1.Volume
    HAVING Ord1.Volume < SUM ( Transactions.Volume )
    )

    Merci d'avance

Discussions similaires

  1. Difference entre requete
    Par xian21 dans le forum Langage SQL
    Réponses: 2
    Dernier message: 05/09/2008, 12h15
  2. une requete ORDER BY sans difference entre maj et min
    Par skillipo dans le forum Hibernate
    Réponses: 4
    Dernier message: 07/03/2008, 14h57
  3. [Oracle 9] Requête sur une différence entre dates
    Par claralavraie dans le forum Langage SQL
    Réponses: 2
    Dernier message: 04/09/2006, 17h42
  4. difference entre requete dynamique et requete normal
    Par Melvine dans le forum Oracle
    Réponses: 6
    Dernier message: 24/05/2006, 16h10
  5. difference entre deux requetes
    Par rdams dans le forum Requêtes
    Réponses: 3
    Dernier message: 21/12/2005, 09h38

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