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 :

Optimiser une requête sql


Sujet :

Langage SQL

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    169
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 169
    Points : 76
    Points
    76
    Par défaut Optimiser une requête sql
    Bonjour,

    voici ma requête qui prend beaucoup de temps (Oracle 11gR2)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    update n47oa_d.cp_bank_acct_fr --a inner join n47oa_d.cp_bank_acct_fr b on a.
    set preferred = 1
    where l_for in (select l_for from n47oa_d.cp_bank_acct_fr where preferred =0  group by l_for having count(distinct(o__num))=1)
    Peut-on l'optimiser ?

    Merci

  2. #2
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 099
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Val de Marne (Île de France)

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

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 099
    Points : 28 400
    Points
    28 400
    Par défaut
    L'utilisation de EXISTS est parfois plus efficace que IN.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    UPDATE  n47oa_d.cp_bank_acct_fr tgt
    SET     tgt.preferred = 1
    WHERE   EXISTS   
            (   SELECT  NULL
                FROM    n47oa_d.cp_bank_acct_fr cnt 
                WHERE   cnt.preferred = 0  
                    AND cnt.l_for = tgt.l_for
                HAVING  COUNT(DISTINCT(cnt.o__num)) = 1
            )
    Il va sans dire que l'existence d'un index sur la colonne l_for est un avantage non négligeable.

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    169
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 169
    Points : 76
    Points
    76
    Par défaut
    merci bcp pour ce retour . Je passe à résolu.

  4. #4
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 099
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Val de Marne (Île de France)

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

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 099
    Points : 28 400
    Points
    28 400
    Par défaut
    Ce serait intéressant de connaitre la solution que tu as utilisée et le gain de performance obtenu.

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 06/08/2014, 18h07
  2. Optimiser une requête SQL
    Par sabdoul dans le forum Oracle
    Réponses: 26
    Dernier message: 19/06/2013, 21h14
  3. Optimiser une requête SQL
    Par Colonel-Essaid dans le forum Langage SQL
    Réponses: 1
    Dernier message: 02/05/2013, 16h44
  4. Aide pour Simplifier/optimiser une requête SQL
    Par bubu06 dans le forum Requêtes
    Réponses: 3
    Dernier message: 10/05/2012, 18h25
  5. Optimiser une requête SQL d'un moteur de recherche
    Par kibodio dans le forum Langage SQL
    Réponses: 2
    Dernier message: 06/03/2005, 20h55

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