|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Membre confirmé
![]() Inscription : juillet 2005 Messages : 402 ![]() |
Bonjour à tous.
Je fais actuellement des tests d'index sur une table (85 millions de lignes, 35 Go) afin d'optimiser les temps de traitement. Je travaille sur un environnement de développement, importé depuis l'environnement de production. J'ai supprimé les index existants relatifs à cette table pour repartir de zéro. J'ai créé 2 index, mais je suis déçu par les résultats obtenus et je suis parfois surpris par la manière dont l'optimiseur d'Oracle les utilise (ou ne les utilise pas, d'ailleurs). Les statistiques de ces index n'ont jamais été calculées et je me demandais si cela pouvait avoir une incidence. Il me semblait que ces statistiques étaient utiles pour orienter l'optimiseur entre les différents index, ou après modifications du contenu de la base. Or ce contenu ne change pas dans mon environnement de développement, et je n'ai actuellement sur ma table que 2 index, dont un est la clé primaire. J'en viens donc à me demander si je ne devrais pas lancer un COMPUTE STATISTICS sur mes index. De plus, peut-on calculer ces stats sans "rebuilder" les index ? |
|
|
00
|
|
|
#2 |
|
Membre éclairé
![]() Inscription : avril 2006 Messages : 465 ![]() |
Bien sur que les statistiques sont importantes sur les tables et les index. Si tu n'est pas en mode RULE c'est la dessus qu'Oracle se base pour calculer ses plans.
Le calcul des statistique n'a rien a voir avec le REBUILD. Quand tu fais un REBUILD il ne calcul pas les stats et pour calculer les stats tu n'as pas besoins de faire un REBUILD. Compte tenu du gros volume de ta table tu peux limiter le temps de calculs des stats en utilisant un estimate à 30 % par exemple plutôt que de calculer sur toute la table/index. Une dernière précision, si le contenu de la base change pas ou peu cela veut dire que tu n'auras pas besoins de recalculer les stats régulièrement mais il faut quand même les calculer une première fois |
|
|
00
|
|
|
#3 | ||||
|
Membre confirmé
![]() Inscription : juillet 2005 Messages : 402 ![]() |
Citation:
Citation:
Code :
ALTER INDEX mon_idx REBUILD COMPUTE STATISTICS Du coup, que faut-il lancer comme commande ? Citation:
Citation:
Merci pour les renseignements. |
||||
|
|
00
|
|
|
#4 |
|
Membre éclairé
![]() Inscription : avril 2006 Messages : 465 ![]() |
dans les paramètres oracle tu as OPTIMIZER_MODE qui te dis si tu es RULE ou CHOOSE.
RULE Utilise des règles fixe du genre un index c'est mieux que pas d'index CHOOSE est sensé être plus intelligent et vérifier si l'index est vraiment mieux. Pour calculer les stats vas voir du coté du package DBMS_STATS |
|
|
00
|
|
|
#5 | ||
|
Membre confirmé
![]() Inscription : juillet 2005 Messages : 402 ![]() |
Citation:
Citation:
Merci pour les infos. A+ |
||
|
|
00
|
Copyright © 2000-2012 - www.developpez.com