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

Comment interprétez-vous le plan d'explication d'une requête ?

Je frissonne chaque fois que je vois des commentaires selon lesquels les balayages de table complets sont mauvais et l'accès à l'index est bon. Les analyses complètes de table, les analyses de plage d'index, les analyses rapides d'index complet, les boucles imbriquées, les jointures de fusion, les jointures de hachage, etc. sont simplement des mécanismes d'accès qui doivent être compris par l'analyste et combinés à une connaissance de la structure de la base de données et du but d'une requête dans afin de parvenir à une conclusion significative.

Une analyse complète est tout simplement le moyen le plus efficace de lire une grande partie des blocs d'un segment de données (une table ou une (sous-)partition de table) et, bien qu'elle puisse souvent indiquer un problème de performances, ce n'est que dans le contexte de savoir s'il s'agit d'un mécanisme efficace pour atteindre les objectifs de la requête. En tant qu'entrepôt de données et gars de la BI, mon indicateur d'avertissement numéro un pour les performances est une méthode d'accès basée sur un index et une boucle imbriquée.

Ainsi, pour le mécanisme de lecture d'un plan d'explication, la documentation Oracle est un bon guide :http://download.oracle.com/docs/cd/B28359_01/server.111/b28274/ex_plan.htm#PFGRF009

Bonne lecture également du Guide de réglage des performances.

Ayez également un google pour "rétroaction de cardinalité", une technique dans laquelle un plan d'explication peut être utilisé pour comparer les estimations de cardinalité à différentes étapes d'une requête avec les cardinalités réelles rencontrées lors de l'exécution. Wolfgang Breitling est l'auteur de la méthode, je crois.

Donc, en bout de ligne :comprenez les mécanismes d'accès. Comprendre la base de données. Comprendre l'intention de la requête. Évitez les règles empiriques.