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

PostgreSQL Discussion :

Optimalité d'une requete


Sujet :

PostgreSQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    77
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 77
    Par défaut Optimalité d'une requete
    Bonjour,
    Mon probleme concerne l'optimalité d'une de mes requêtes sur Postgresql 8.2 :

    J'ai une table dans laquelle il y a 2 colonnes A et B.
    J'aimerais, pour un ensemble de A, avoir le B si il vaut une valeur donné, ou rien si il n'y a pas.

    La requête de base serait :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    (SELECT A, B FROM table WHERE A IN(1,2,3) AND B = '2007-05-05')
    UNION
    (SELECT A, NULL FROM table WHERE A IN(1,2,3) AND NOT EXISTS(SELECT * FROM table WHERE A IN(1,2,3)AND B='2007-05-05'));
     
    Je devrais par exemple avoir : 
    ---------------
    A | B
    ---------------
    1 | 2007-05-05
    2 | 
    3 |
    ---------------
    Mais ça me semble bien compliqué : je doute qu'une recherche sur 3 tables (3 select) pour cette requête soit optimal, surtout si cette table est grande. Avez-vous d'autres propositions ou est-ce la meilleure?

    Autre chose : J'ai vu dans un post qu'il fallait éviter les OR et utiliser les IN. Pourquoi les performances sont-elles meilleures? Ca vaut le coup de faire la négation avec des NAND quand on a que des OR?

    3eme question : Je pense avoir besoin d'une requête du style "A=1 AND B='2005-05-05' OR A=4 AND B='2007-07-07' OR .... une 50e de fois ...". Quelle serait la bonne demarche à faire?

    ps : je post dans le forum postgresql pour des optimisations eventuelles liée à postgres

  2. #2
    Membre confirmé
    Inscrit en
    Janvier 2006
    Messages
    139
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 139
    Par défaut
    pour ta 3ème question, tu peux essayer de faire des couples du genre (A,B) in ((1,'2005-05-05'),....)

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    77
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 77
    Par défaut
    Merci, je ne connaissais pas le coup des couples

Discussions similaires

  1. Quote dans une requete...
    Par Isildur dans le forum Langage SQL
    Réponses: 6
    Dernier message: 20/06/2006, 10h57
  2. reauete suite à une requete
    Par 74160 dans le forum Requêtes
    Réponses: 4
    Dernier message: 22/08/2003, 14h42
  3. [syntaxe] Gerer les variables dans une requete
    Par rastapopulos dans le forum MS SQL Server
    Réponses: 12
    Dernier message: 15/04/2003, 12h53
  4. [VB6] [Excel] Résultat d'une requete ds une feuille
    Par elifqaoui dans le forum VB 6 et antérieur
    Réponses: 12
    Dernier message: 07/01/2003, 17h52
  5. Créer une vue pour trier une requete UNION ?
    Par Etienne Bar dans le forum SQL
    Réponses: 3
    Dernier message: 03/01/2003, 20h22

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