|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||
etudiant Inscription : octobre 2011 Messages : 24 ![]() |
bonjour,
Code :
et la deuxième 52,650 Comment cela se fait que le résultat est différent et quel est la commande la plus précise ? |
||
|
|
00
|
|
|
#2 |
|
Membre Expert
![]() Inscription : août 2009 Messages : 779 ![]() |
Le count sur la table vous indique la valeur actuelle.
Interroger la table dba_tables vous donne l'état de la table la dernière fois qu'elle a été analysée (cf last_analyzed). |
|
|
20
|
|
|
#3 |
|
Membre éprouvé
![]() Administrateur de base de données Inscription : novembre 2007 Messages : 341 ![]() |
la commande la plus précise est le count(*) qui parcourt réellement la table pour y compter le nombre de lignes. la colonne num_rows de dba_tables, que tu trouves aussi dans dba_tab_statistics par exemple reflète ce qui a été comptabilisé comme nombre de lignes lors de la dernière collecte de statistiques. donc des modifications ont pu avoir lieu depuis ce moment là, d'où le delta que tu constates.
Classiquement, si tu laisses faire oracle avec les paramètres par défaut, il recalculera les stats lorsque 10% de modifications auront eu lieu dans la table (pour savoir cela il stocke dans des vues le nombre d'inserts, updates, deletes... que tu peux regarder dans dba_tab_modifications). ces informations sont flushées dans cette table par une procédure que tu peux lancer toi-même : Code :
exec dbms_stats.FLUSH_DATABASE_MONITORING_INFO; ou alors tu relances un calcul de stats et le num_rows reflètera la réalité. |
|
|
10
|
|
|
#4 | |||
![]() Inscription : décembre 2002 Messages : 2 392 ![]() |
Citation:
Code :
__________________
Consultant / formateur Oracle indépendant Certifié OCP 10g et 11g, sécurité 11g |
|||
|
|
10
|
Copyright © 2000-2012 - www.developpez.com