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

Oracle Discussion :

index ralentit requete


Sujet :

Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Janvier 2005
    Messages
    34
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 34
    Par défaut index ralentit requete
    Bonjour a tous,

    Structure de ma base :

    3 tables :
    client, prestataire, planning

    2 jointures :
    client <- planning (clé secondaire dans planning)
    prestataire <- planning (clé secondaire dans planning)

    champs table planning :
    identifiant auto, heure debut, heure fin, date debut, date fin, lien prestataire, lien client

    5 index :
    lien prestataire
    lien client
    date debut
    date fin
    identifiant auto (index automatique sur la clé primaire)

    requete de test et temps d'execution :

    select * from planning where date debut>='01/01/2006' and date fin<='31/12/2006'; (environ 4 sec)

    select * from planning where date debut>='01/01/2006' and date fin<='31/12/2006' order by planning identifiant; (environ 20 sec)

    select * from planning where date debut>='01/01/2006' and date fin<='31/12/2006' order by [n'importe quel champs]; (environ 20 sec)


    Si je supprime les 2 index sur date debut et date fin,
    requete de test et temps d'execution :

    select * from planning where date debut>='01/01/2006' and date fin<='31/12/2006'; (environ 4 sec)

    select * from planning where date debut>='01/01/2006' and date fin<='31/12/2006' order by planning identifiant; (environ 4 sec)

    select * from planning where date debut>='01/01/2006' and date fin<='31/12/2006' order by [n'importe quel champs]; (environ 4 sec)

    A quoi ce problème de lenteur est-il du ?

    Sachant que je ne peut pas supprimer les index sur les champs en questions car il me font réellement gagner du temps sur l'exectution de certaines editions et certaines requetes.

    Que puis-je faire ?

    D'avance merci.

  2. #2
    Membre expérimenté
    Inscrit en
    Septembre 2006
    Messages
    142
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 142
    Par défaut
    Essaye de faire un explain plan pour comprendre la différence entre les 2 analyses (avec ou sans index).

    De plus tu peux esssayé de spécifier par un hint la non utilisation des index

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    select /*+ NO_INDEX(<table_name> <index_name> <index_name>) */ * from ....
    L'optimiseur fonctionne en mode cost ou rule ?

  3. #3
    Membre averti
    Inscrit en
    Janvier 2005
    Messages
    34
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 34
    Par défaut
    Salut,

    Je ne connaissais pas la commande Explain plan, après quelques recherche j'ai trouvé comment l'utiliser.

    Le résultat est assez étonnant.

    Résultat de la requete "SELECT * from planning where date debut>='01/01/2006' and date fin<='12/31/2006' order by date identifiant auto;"

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Résultat avec index :
    sel1    SELECT STATEMENT
    sel1    SORT ORDER BY
    sel1    TABLE ACCESS BY INDEX ROWID
    sel1    INDEX RANGE SCAN
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Résultat sans index :
    sel2    SELECT STATEMENT
    sel2    TABLE ACCESS BY INDEX ROWID
    sel2    INDEX RANGE SCAN
    Je suis surpris de voir qu'il n'y a pas d'étapes ORDER BY sans les index.

    Je ne suis pas sur de comprendre le résultat et loin, très loin de voir ce que je pourrai faire pour résoudre le problème.

    Quelqu'un peut m'aider grâce a ces résultats ?

    Merci d'avance.

  4. #4
    Expert éminent
    Avatar de orafrance
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    15 967
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Par défaut
    Merci d'utiliser les balises conformément aux régles du forum... là c'est illisible

  5. #5
    Membre averti
    Inscrit en
    Janvier 2005
    Messages
    34
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 34
    Par défaut
    Désolé c'est corrigé.

    J'espère que cette fois c'est correct.

  6. #6
    Expert éminent
    Avatar de orafrance
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    15 967
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Par défaut
    en effet, c'est étrange... c'est EXACTEMENT la même requête, tu es sûr ?

    tu es dans quelle version ? Les stats sont calculées comment ? Quel est la valeur de SORT_AREA_SIZE ?

Discussions similaires

  1. Clustered index : ralentit l'INSERT ?
    Par balmeyer dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 19/09/2007, 13h40
  2. Requete group by et index sur fonction
    Par Omsey dans le forum Oracle
    Réponses: 8
    Dernier message: 26/10/2006, 10h26
  3. [phpBB] 16 Requêtes SQL sur la page index
    Par Heptaeon dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 8
    Dernier message: 21/09/2006, 17h12
  4. requete QBE / requete code : rapidité et index
    Par LostIN dans le forum Requêtes et SQL.
    Réponses: 11
    Dernier message: 05/07/2006, 08h54
  5. Requetes et Index pour optimisation...
    Par manuds dans le forum PostgreSQL
    Réponses: 2
    Dernier message: 17/03/2006, 09h05

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