Bonjour,
Je travaille sur une base de données infocentre sur lequel nous subissons aléatoirement de gros problèmes de dégradation de plans.
Des requêtes qui mettent 4 mins, vont du jour au lendemain passer à 6 heures, sans que rien ne le justifie (pas de recalcul de stats entre temps, plan validé dans la base line).
La seule solution que nous avons trouvée pour l'instant est de passer par un hint pour l'obliger à passer par les index clé primaires.
Et c'est cela qui nous étonne le plus. Par défaut le plan choisi fait un Full sur toutes les tables de la requête alors que les conditions de jointures sont correctes et faites sur les clés primaires.
En ajoutant les hints /*+ Index(table indexPK)*/ le temps passe à 2 mins ! De plus il faut pour chacune des tables indiquer l'index par lequel passer, sinon c'est un FULL qui est choisi.
Nous avons retourné le problème dans tous les sens impossible de comprendre :
- d'où vient ce changement de plan
- pourquoi il nous est impossible de faire choisir le bon plan naturellement (sans hint) à l'optimiseur.
A vrai dire nous ne savons plus trop par où prendre le problème et où regarder.
Si vous avez des idées, je ne met pas plus de précisions sur le paramétrage pour l'instant car je ne sais quoi mettre tellement le problème nous paraît insoluble.
Macben
Partager