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

SQL Oracle Discussion :

Amélioration requête complexe


Sujet :

SQL Oracle

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

    Informations forums :
    Inscription : Juin 2006
    Messages : 69
    Points : 40
    Points
    40
    Par défaut Amélioration requête complexe
    Bonjour à tous,

    je sollicite votre science pour m'aider à optimiser une requête SQL longue et complexe.

    Dans cette requête j'ai une longue structure de la forme :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    NomTable.NomChamp like ('valeur1%') or
    NomTable.NomChamp like ('valeur2%') or
    NomTable.NomChamp like ('valeur3%') or
    etc.
    Je me demande si vous connaissez une manière de condenser et optimiser un tel code.

    Merci de vos retours

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    77
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2008
    Messages : 77
    Points : 84
    Points
    84
    Par défaut
    Condenser le code, oui. Mais je ne suis pas sûr qu'il sera optimisé même si je ne pense pas qu'il sera plus long ...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    substr(NomTable.NomChamp,1,7) in ('valeur1','valeur2','valeur3', ...)

  3. #3
    Expert éminent sénior Avatar de mnitu
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2007
    Messages
    5 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2007
    Messages : 5 611
    Points : 11 252
    Points
    11 252
    Par défaut
    Avec seulement ces informations c’est dur .
    Quelle version d’Oracle ?
    Existe-il un index sur la zone en question ? Est-il utilisé ?
    Les statistiques sont-elles à jours ?
    Quel est l’état actuel des choses et que est-ce que vous vous proposer d’obtenir ?
    Fonctionnellement cette requête peut-elle être reformulée ?
    Quelle volumétrie ?
    Comment savez-vous que c’est précisément cette construction qui pose des problèmes d’optimisation par rapport à la complexité de la requête ?

  4. #4
    Expert éminent sénior Avatar de mnitu
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2007
    Messages
    5 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2007
    Messages : 5 611
    Points : 11 252
    Points
    11 252
    Par défaut
    Citation Envoyé par dragon74 Voir le message
    Condenser le code, oui. Mais je ne suis pas sûr qu'il sera optimisé même si je ne pense pas qu'il sera plus long ...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    substr(NomTable.NomChamp,1,7) in ('valeur1','valeur2','valeur3', ...)
    Cette transformation n'est pas équivalente donc inutilisable.

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    77
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2008
    Messages : 77
    Points : 84
    Points
    84
    Par défaut
    Salut mnitu,
    dans l'exemple qui est donné, c'est équivalent. Mais je suis d'accord, il y a une restriction, c'est que valeur1, valeur 2 et valeur3 doivent être de la même longueur à cause du fait que l'on précise la longueur dans le substr.

  6. #6
    Expert éminent sénior Avatar de mnitu
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2007
    Messages
    5 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2007
    Messages : 5 611
    Points : 11 252
    Points
    11 252
    Par défaut
    Citation Envoyé par dragon74 Voir le message
    Salut mnitu,
    dans l'exemple qui est donné, c'est équivalent. Mais je suis d'accord, il y a une restriction, c'est que valeur1, valeur 2 et valeur3 doivent être de la même longueur à cause du fait que l'on précise la longueur dans le substr.
    Salut dragon74,
    Pour moi « c'est équivalent avec restriction » égal « ce n'est pas équivalent ».
    Mais, de plus, je suppose que les valeurs viennent de l'interface utilisateur donc voilà pour quoi je ne pense pas que la solution que tu propose est vraiment envisageable. Et il y a aussi le substr qui va faire sauter l’index (je sait on pourrait utiliser un index fonction mais pour l'instant …)

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    77
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2008
    Messages : 77
    Points : 84
    Points
    84
    Par défaut
    C'est vrai qu'il y a la restriction. J'essayais juste de proposer quelque chose à partir des infos fournies. Je dois bien admettre que tant qu'on n'a pas de réponse à ton premier post sur le sujet, il est difficile de faire plus

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

Discussions similaires

  1. Améliorer une requête complexe
    Par cyberyan dans le forum PL/SQL
    Réponses: 9
    Dernier message: 04/09/2008, 18h34
  2. Requête complexe
    Par Yali dans le forum Langage SQL
    Réponses: 2
    Dernier message: 31/01/2005, 10h19
  3. 3 tables avec requête complexe
    Par yamino dans le forum Langage SQL
    Réponses: 6
    Dernier message: 25/03/2004, 20h50
  4. Encore une requête complexe sur plusieurs tables
    Par DenPro dans le forum Langage SQL
    Réponses: 5
    Dernier message: 09/12/2003, 20h05
  5. Requête complexe sur plusieurs table
    Par DenPro dans le forum Langage SQL
    Réponses: 13
    Dernier message: 25/11/2003, 18h50

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