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 optimiser une requête


Sujet :

Langage SQL

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 11
    Points : 9
    Points
    9
    Par défaut [Résolu] besoin d'aide pour optimiser une requête
    Bonjour à tous,

    je débute en sql et j'ai une requête à exécuter sur une table (SGBD Oracle), mais le problème est que cette requête met plusieurs minutes à s'éxecuter et je voudrais savoir s'il est possible de l'optimiser ou de faire autrement.
    (la table contient environ 300.000 lignes).

    table X

    ++++++++++++
    id | nom | etat |
    ++++++++++++
    1 | toto | 15
    2 | toto | 30
    3 | tata | 15
    4 | toto | 20
    5 | tete | 15
    6 | tete | 30
    7 | tutu | 15
    8 | truc | 20
    9 | troc | 18

    Je voudrais avoir les "nom" qui ont un "etat" valant 15 mais qui ne doivent pas avoir un "etat" valant 20 ou 30.

    Donc ici tata et tutu seulement répondent aux critères.

    Voici ma requête :

    select nom from X where etat=15 and nom not in (select nom from X where etat = 20 or etat = 30)

    Y-a-t-il un moyen de faire autrement en plus performant (en supposant qu'elle marche !! ) ?

    merci bcp si vous avez des idées.

  2. #2
    Membre éclairé Avatar de plabrevo
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    547
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 547
    Points : 670
    Points
    670
    Par défaut
    Si ton etat doit etre egal at 15, il ne peux pas etre egal a 20 ou 30, donc il me semble que la requete peut etre simplifiee en:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select nom from X where etat=15

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 11
    Points : 9
    Points
    9
    Par défaut
    merci pour ton intervention.
    Ca ne peut pas fonctionner car un nom peut avoir plusieurs états. Avec cette requête ça me renverrai toto alors que je veux l'exclure.

  4. #4
    Membre éclairé Avatar de plabrevo
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    547
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 547
    Points : 670
    Points
    670
    Par défaut
    Un coup de fatigue. Et avec une operation ensembliste?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    SELECT nom
    FROM   X
    WHERE  etat        = 15
    MINUS
    SELECT nom 
    FROM   X
    WHERE  etat        = 20 
       OR  etat        = 30
    /

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 11
    Points : 9
    Points
    9
    Par défaut
    Je viens d'essayer avec ta requête et ça s'exécute quasi instantanément !!

    L'opération ensembliste est donc bcp plus efficace.

    Merci bcp !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Besoin d'aide pour créer une requête
    Par cedric/copy dans le forum ASP
    Réponses: 6
    Dernier message: 13/03/2009, 16h29
  2. Besoin d'aide pour optimiser une petite query sql
    Par AsmCode dans le forum MS SQL Server
    Réponses: 5
    Dernier message: 21/01/2009, 14h52
  3. Besoin d'aide pour créer une requête
    Par fabien59420 dans le forum Requêtes et SQL.
    Réponses: 44
    Dernier message: 26/05/2008, 11h08
  4. [MySQL] besoin d'aide pour exécuter une requête et en récupérer le résultat
    Par fast462 dans le forum PHP & Base de données
    Réponses: 9
    Dernier message: 28/05/2007, 10h30
  5. besoin d 'aide pour formuler une requête
    Par cdu dans le forum Langage SQL
    Réponses: 2
    Dernier message: 08/04/2006, 19h38

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