Précédent   Forum des professionnels en informatique > Bases de données > Oracle
Oracle Forum Oracle : le serveur, les outils, ... Voir F.A.Q Oracle Tutoriels Oracle
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 21/06/2007, 09h11   #1
Invité de passage
 
Inscription : mars 2006
Messages : 20
Détails du profil
Informations forums :
Inscription : mars 2006
Messages : 20
Points : 1
Points : 1
Par défaut Explain Plan : nombre de lignes estimé incorrect

Bonjour à tous,

J'ai découvert une bizarrerie sur une base de données Oracle 9iR2 (9.2.0.7.0). J'espère trouver quelqu'un qui pourrait m'expliquer... Moi je ne vois vraiment pas :

Voici mon problème : Imaginons une table A avec différents champs dont une clé primaire. Dans cette table, j'ai une colonne nommé "type" (c'est peut-être de ce nom que vient le pb : mot clé oracle ?). Il existe un index sur cette colonne, index simple et non unique. Cette colonne peut prendre 6 valeurs différentes. Voici les valeurs possibles et le nombre d'instance dans la table A :
'Client' 1
'Résidentiel' 3
'Société' 1
'entité' 5790
'interne' 1
'societe' 481425

Si je regarde le plan d'exécution de la requête select * from A where type = 'entité', le nombre de ligne en retour estimé est de 81K ! On a pourtant que 5790 ligne retournée. Ce nombre de ligne retournée est toujours de 81k quelque soit la valeur recherchée dans la colonne type. J'ai testé sur une base différente, on a pas le problème, le nombre de ligne estimé est correcte. Notre client a par contre ce problème sur sa base de recette, mais pas en production...

Je précise que les stats ont été passées en mode full sur les index et tables.

J'ai tenté de recréer une colonne "x_type" reprenant la même valeur que la colonne "type" avec le même index : le problème ne se pose plus.

Merci d'avance pour vos éventuels éclaircissements.

Aurélien
AurelGTS est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/06/2007, 09h44   #2
Rédacteur/Modérateur
 
Avatar de orafrance
 
Inscription : janvier 2004
Messages : 15 861
Détails du profil
Informations personnelles :
Âge : 35

Informations forums :
Inscription : janvier 2004
Messages : 15 861
Points : 16 212
Points : 16 212
pour tenir compte des valeurs utilisées il faudrait calculer les stats plus précisément. C'est le role des histogrammes.
orafrance est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/06/2007, 09h52   #3
Invité de passage
 
Inscription : mars 2006
Messages : 20
Détails du profil
Informations forums :
Inscription : mars 2006
Messages : 20
Points : 1
Points : 1
Pourtant, j'ai passer les stats en mode full sur les index de la table et sur la table elle-même :

DBMS_STATS.GATHER_TABLE_STATS(schema,table,estimate_percent => 100);

DBMS_STATS.GATHER_INDEX_STATS(schema,index,estimate_percent => 100);

Je ne vois pas comment calculer plus précisément... Qu'entends-tu par là stp ?

merci
AurelGTS est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/06/2007, 10h23   #4
Rédacteur/Modérateur
 
Avatar de orafrance
 
Inscription : janvier 2004
Messages : 15 861
Détails du profil
Informations personnelles :
Âge : 35

Informations forums :
Inscription : janvier 2004
Messages : 15 861
Points : 16 212
Points : 16 212
recherche histogram dans la doc
orafrance est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/06/2007, 10h43   #5
Invité de passage
 
Inscription : mars 2006
Messages : 20
Détails du profil
Informations forums :
Inscription : mars 2006
Messages : 20
Points : 1
Points : 1
En effet, le pb de se pose plus après calcul de l'histogramme.

Merci !
AurelGTS est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 03h08.


 
 
 
 
Partenaires

Hébergement Web