|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Candidat au titre de Membre du Club
![]() Inscription : janvier 2007 Messages : 60 ![]() |
Bonjour à tous.
On viens de me dire une chose qui m'étonne beaucoup: le calcul (re-calcul) des index n'a pas besoin d'être effectué si le volume de la table est multiplié par deux ou trois sachant que nous avons des tables contenant jusqu'à 100 millions de lignes. Est-ce vrai? D'autre part, je fais un projet d'historisation de données basé sur une date que j'ai mis dans une table ne contenant que cette ligne. Je n'avais pas calculé les stats et les temps pour les grosses tables allaient jusqu'à 144 minutes. Juste en calculant les stats de la table contenant la date, le temps est passé à une vingtaine de minutes. Pourquoi? |
|
|
00
|
|
|
#2 |
|
Membre Expert
![]() Inscription : avril 2006 Messages : 1 024 ![]() |
On ne "recalcule" pas les index. Soit on recalcule les stats (pour permettre à l'optimiseur de faire du bon boulot), soit on reconstruit les index (pour une implémentation physique plus efficace).
De manière générale, il faut relancer les stats quand il y a une grosse modification dans la répartition ou le volume de données. 2ieme question: Il est primordial que les stats soient calculées sur TOUTES les tables concernées dans une requete. Le phénomène que tu as constaté est tout à fait normal, car en passant les stats sur ta mini-table, tu as indiqué à oracle qu'il pouvait faire un acces FULL avec une seule lecture de bloc, donc il a intégré cette donnée dans sa recherche du meilleur plan, et, fort de cette nouvelle info, il en a effectivement trouvé un meilleur... |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com