J'ai une requête qui ressemble à ci-dessous et les tables A, T, S ont environ 1 million de lignes alors que P ont plus de 100 millions de lignes. J'ai récemment introduit la vue en ligne "temp" dans cette requête et cela a causé une dégradation drastique des performances. Les données récupérées pour temp sont à peine 50 lignes et cette requête inline s'exécute en un clin d'oeil lorsqu'elle est exécutée seule. Les statistiques autotrace montrent une augmentation énorme du nombre de "consistantes obtient" d'un nombre de 6 chiffres avant d'introduire la température à un nombre de 9 chiffres après l'avoir ajouté !! En outre, plus de 90% de LAST_CR_BUFFER_GETS sont comptabilisés pour la vue "temp". Si j'extrais les données de cette vue dans une table temporaire et que j'utilise cette table dans le cadre des jointures, la performance est très bonne mais cette solution n'est pas vraiment réalisable pour moi.Problème de performances avec la vue en ligne dans Oracle
Je sais que la question est très généralisée mais je me demande s'il y a quelque chose de trivial dans l'utilisation de cette vue en ligne. Les vues en ligne n'offrent-elles pas les mêmes performances que si elles contenaient ces données dans une table temporaire? Y at-il un moyen de suggérer à Oracle d'utiliser cette vue de manière efficace et d'augmenter ainsi les performances?
select t.id,
a.date
from A a,
T t,
P p,
S s,
(select id
from S,
R
where s.id = r.id
and r.code = 10
r.code1 = 20
r.name = 'string1') temp
where ...cond1
...cond2
...cond2
s.id = temp.id
Bonjour, Pourriez-vous publier votre plan de requête? –
Affichez la requête actuelle (la vôtre contient des erreurs de syntaxe dans tout le magasin) et le plan d'explication, les tailles de table, etc. et nous pourrons commencer. – Ollie
On dirait que l'estimation de la cardinalité pour la sous-sélection est loin. Ayez une lecture de [ce document] (http://www.oracle.com/technetwork/database/focus-areas/bi-datawarehousing/twp-explain-the-explain-plan-052011-393674.pdf) – Gaius