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

SQL Optimizer pour les grandes tables de bases de données

Vous devriez probablement commencer par EXPLAIN PLAN .

Modifiez ensuite votre question et publiez l'instruction SQL et la sortie de EXPLAIN PLAN.

Plus tard . . .

Je ne vais pas être d'une grande aide pour vous sur cette question. 269 lignes, au moins 29 SELECT, requêtes parallèles, bases de données distantes, jointures externes (ancien style), etc.

Le meilleur conseil que je puisse vous donner est

  • obtenir plus d'informations auprès d'EXPLAIN PLAN, et
  • simplifier le problème.

La table de planification a plus de colonnes que celles généralement affichées. Les colonnes COST, CARDINALITY, BYTES et TIME peuvent être utiles pour hiérarchiser vos efforts de réglage.

Vous avez 10 analyses complètes de table dans cette requête. ("TABLE ACCESS FULL" dans le plan de requête.) C'est généralement un mauvais signe ; les analyses de table complètes prennent souvent un temps relativement long à s'exécuter. Ce n'est pas toujours un mauvais signe. Une analyse complète d'une petite table peut être plus rapide qu'une analyse d'index.

Commencez par obtenir la sortie EXPLAIN PLAN pour chacune des 29 instructions SELECT de votre requête. Si l'un d'entre eux affiche une analyse complète de la table, vous pouvez probablement améliorer ses performances avec index appropriés . (Oracle prend en charge de nombreux types d'index différents. Ne négligez pas les opportunités d'index multi-colonnes.) Dans tous les cas, la sortie EXPLAIN PLAN vous aidera à identifier le plus lent des 29 SELECT.