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 :

Optimisation d'une requête


Sujet :

MS SQL Server

  1. #1
    Rédacteur
    Avatar de JauB
    Homme Profil pro
    Freelancer
    Inscrit en
    Octobre 2005
    Messages
    1 792
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Maroc

    Informations professionnelles :
    Activité : Freelancer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1 792
    Points : 2 914
    Points
    2 914
    Par défaut Optimisation d'une requête
    Bonjour,
    j'ai une table qui ressebme à
    id st dt mod
    1 80 20070101 100
    1 50 20070102 99
    1 80 20070102 98
    1 50 20070103 97

    je veux sélectionner la dernière ligne ( ayant un max dans le champ dt et le min dans le champ mod et tester si le champ st = 80 si c'est 50 je ne le sélectionne pas )
    mais je ne veux pas passer par une requête imbriquée
    si vous avez une idée
    merci d'avance

  2. #2
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 22
    Points : 37
    Points
    37
    Par défaut
    Citation Envoyé par JauB
    Bonjour,
    j'ai une table qui ressebme à
    id st dt mod
    1 80 20070101 100
    1 50 20070102 99
    1 80 20070102 98
    1 50 20070103 97
    Les valeurs de ton champ id sont suspectes.

    Citation Envoyé par JauB
    je veux sélectionner la dernière ligne ( ayant un max dans le champ dt et le min dans le champ mod et tester si le champ st = 80 si c'est 50 je ne le sélectionne pas )
    mais je ne veux pas passer par une requête imbriquée
    si vous avez une idée
    merci d'avance
    Je ne vois pas de solution sans requete imbriquée (soit dans un IN soit dans un FROM)
    Quelle est la raison pour laquelle tu n'en veux pas?

  3. #3
    Rédacteur
    Avatar de JauB
    Homme Profil pro
    Freelancer
    Inscrit en
    Octobre 2005
    Messages
    1 792
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Maroc

    Informations professionnelles :
    Activité : Freelancer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1 792
    Points : 2 914
    Points
    2 914
    Par défaut
    et beh les requête imbriquée ça prend enormément de temps je pense.

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 22
    Points : 37
    Points
    37
    Par défaut
    Citation Envoyé par JauB
    et beh les requête imbriquée ça prend enormément de temps je pense.
    1. Pas forcément
    2. Tu n'as pas le choix

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2007
    Messages : 46
    Points : 58
    Points
    58
    Par défaut Re
    Bonjour,
    un requête imbriquée ne prend pas obligatoirement plus de temps...
    sinon, en voila une non imbriquée
    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
    SELECT A.ID,
           A.ST,
           A.DT,
           A.MD
      FROM TEST A
      JOIN TEST B ON (    B.ID = A.ID
                      AND B.ST = A.ST)
      JOIN TEST C ON (    A.ID = C.ID 
                      AND A.ST = C.ST)
     WHERE A.ST = 80 
     GROUP BY A.ID,
              A.ST,
              A.DT,
              A.MD
     HAVING A.DT=MAX(B.DT)
        AND A.MD=MIN(C.MD)

  6. #6
    Rédacteur
    Avatar de JauB
    Homme Profil pro
    Freelancer
    Inscrit en
    Octobre 2005
    Messages
    1 792
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Maroc

    Informations professionnelles :
    Activité : Freelancer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1 792
    Points : 2 914
    Points
    2 914
    Par défaut
    merci pour vos réponses.
    je vais tester les deux cas et en prendre la plus optimisée en terme de temps d'exécution.

Discussions similaires

  1. Optimisation d'une requête
    Par Louis-Guillaume Morand dans le forum MS SQL Server
    Réponses: 5
    Dernier message: 20/12/2005, 18h21
  2. Optimisation d'une requête d'insertion
    Par fdraven dans le forum Oracle
    Réponses: 15
    Dernier message: 01/12/2005, 14h00
  3. Optimisation d'une requête patchwork
    Par ARRG dans le forum Langage SQL
    Réponses: 1
    Dernier message: 11/09/2005, 15h23
  4. optimisation d'une requête avec jointure
    Par champijulie dans le forum PostgreSQL
    Réponses: 8
    Dernier message: 07/07/2005, 09h45
  5. [DB2] Optimisation d'une requête
    Par ahoyeau dans le forum DB2
    Réponses: 7
    Dernier message: 11/03/2005, 17h54

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