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 :

Optimisation d'une requete ?


Sujet :

Langage SQL

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    292
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 292
    Points : 62
    Points
    62
    Par défaut Optimisation d'une requete ?
    Bonjour,
    j'ai un problème d'optimisation de requete SQL;

    j'ai besoin de faire une comparaison entre 2 tables sur des critères qui contient a peu près les même champs;

    les critères de comparaisons :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    TABLE1 : ref1, code1, commande1, date1
    TABLE2 : ref2, code2, commande2, date2
    je veux sélectionner les lignes de Table1 qui ont la date1=null
    puis sur ce résultat je veux je veux faire la comparaison :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ref1=ref2 et code1=code2 et commande1=commande2 et date2=null
    la requête actuelle est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    select * from TABLE1
    where date1 is null
    le résultat est mis dans resultSet pour la comparaison avec TABLE2
    pour chaque ligne dans resultSet :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    select * from TABLE2
    where ref2=resultSet.getString("ref1")
    and code2=resultSet.getString("code1")
    and commande2=resultSet.get("commande1")
    and date2 is null
    la requête fonctionne très bien,
    le problème c'est quelle mis beaucoup de temps.
    je veux votre avis sur cette requête sinon une autre plus performante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    select * from TABLE1, TABLE2
    where ref1=ref2
    and code1=code2
    and commande1=commande2
    and date1 is null
    and date2 is null
    j'ai pas essayé cette requête (je ne peut pas pour l'instant),
    sinon une idée

    Merci d'avance

  2. #2
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 799
    Points : 34 048
    Points
    34 048
    Billets dans le blog
    14
    Par défaut
    Votre requête devrait donner toutes les lignes de TABLE1 et de TABLE2 qui sont égales.
    Est-ce, dit plus simplement, ce que vous souhaitez ?

    En l'écrivant avec la syntaxe normalisée depuis 1992 pour les jointures c'est encore mieux !
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    SELECT *
    FROM TABLE1 AS t1
    INNER JOIN TABLE2 AS t2 
      ON t2.ref2 = t1.ref1
      AND t2.code2 = t1.code1
      AND t2.commande2 = t1.commande1
    WHERE t1.date1 IS NULL
      AND t2.date2 IS NULL

Discussions similaires

  1. Optimisation d'une requete "TOP 5"
    Par gregb34 dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 04/05/2006, 17h17
  2. Réponses: 5
    Dernier message: 14/04/2006, 18h58
  3. Optimisation d'une requete récurrente
    Par winzou dans le forum PostgreSQL
    Réponses: 3
    Dernier message: 23/01/2006, 22h07
  4. Optimisation d'une requete specifique
    Par Tchinkatchuk dans le forum Langage SQL
    Réponses: 9
    Dernier message: 16/12/2005, 14h14
  5. optimisation d'une requete de recherche
    Par moog dans le forum PostgreSQL
    Réponses: 2
    Dernier message: 06/04/2005, 16h58

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