Par défaut, Oracle utilise l’optimiseur basé sur les coûts afin de déterminer le meilleur plan d’exécution pour une requête. Pour permettre à l’optimiseur de mieux estimer les coûts, vous pouvez calculer les statistiques sur la table que vous interrogez. Pour ce faire, utilisez la commande suivante:

Lancer le script suivant :

select 'analyze table ' ||tablename|| ' compute statistics ; ' from maxtable;

Puis lancer le résultat.

Vous pouvez également recueillir des statistiques en parallèle avec la procédure DBMS_STATS.gather_table_stats.

begin

DBMS_STATS.GATHER_TABLE_STATS('SchName', 'TableName', 
                                       estimate_percent=>50,
                                       block_sample=>TRUE,
                                       degree=>4) ;
end ;

Exemple :

begin
DBMS_STATS.GATHER_TABLE_STATS('MAXIMO', 'WORKORDER',
                                       estimate_percent=>50,
                                       block_sample=>TRUE,
                                       degree=>4) ;
end ;

Ou bien utiliser la procédure de MAXIMO (MAXIMO_GATHER_TABLE_STATS) :

execute MAXIMO_GATHER_TABLE_STATS('SchName', 'TableName', );

-- Exemple sur la table ASSET de la schéma MAXIMO:

execute MAXIMO_GATHER_TABLE_STATS('MAXIMO','ASSET');