Oracle
 sql >> Base de données >  >> RDS >> Oracle

Expliquer le coût du plan

Plus tôt dans la journée, je travaillais avec un développeur sur une requête dont les performances étaient médiocres. Cette requête était volumineuse et complexe, et au départ, cela ressemblait à un effort intimidant pour découvrir où se situait le problème de performances. Avec EXPLAIN PLAN, nous pouvons parfois utiliser le coût pour réduire le problème de performances d'une requête volumineuse et complexe.

En regardant un plan d'exécution de cette requête, nous pouvons voir que son coût global est assez élevé.

En examinant les détails, nous pouvons voir que le balayage complet de la table (FTS) sur la table DETAIL_RECORD a un coût élevé de 51018. Remarquez comment le coût élevé du FTS se propage dans le plan. Toutes les opérations au-dessus de ce FTS ont un coût élevé en raison du coût élevé de cet accès à une seule table. L'accès à la table CIMS_POLICIES_TO_PROCESS a un coût relativement faible, mais l'opération HASH JOIN reçoit son coût élevé uniquement en raison du coût élevé d'accès à la table DETAIL_RECORD.

Le coût global n'est qu'un peu plus élevé que le coût d'accès à cette table. Il est clair que le FTS sur cette table est le plus grand contributeur au problème de cette requête en cours d'analyse.

En examinant les coûts du plan d'exécution de cette manière, nous avons pu nous concentrer très rapidement sur le domaine d'une requête très complexe qui cause le plus de problèmes de performances. Sans l'analyse des coûts effectuée ici, déterminer quelle partie de la requête ci-dessous pose problème aurait demandé beaucoup de travail.