Oracle
 sql >> Datenbank >  >> RDS >> Oracle

SQL-Optimierer für große Db-Tabelle

Sie sollten wahrscheinlich mit PLAN ERKLÄREN beginnen .

Bearbeiten Sie dann Ihre Frage und posten Sie die SQL-Anweisung und die Ausgabe von EXPLAIN PLAN.

Später . . .

Ich werde dir bei dieser Frage nicht viel helfen. 269 ​​Zeilen, mindestens 29 SELECTs, parallele Abfragen, entfernte Datenbanken, äußere Verknüpfungen (alter Stil) und so weiter.

Der beste Rat, den ich Ihnen geben kann, ist

  • weitere Informationen von EXPLAIN PLAN erhalten und
  • vereinfache das Problem.

Die Plantabelle hat mehr Spalten als üblicherweise gepostet werden. Die Spalten KOSTEN, KARDINALITÄT, BYTES und ZEIT können bei der Priorisierung Ihrer Optimierungsbemühungen hilfreich sein.

Sie haben 10 vollständige Tabellenscans in dieser Abfrage. ("TABLE ACCESS FULL" im Abfrageplan.) Das ist normalerweise ein schlechtes Zeichen; Full-Table-Scans dauern oft relativ lange. Es ist nicht immer ein schlechtes Zeichen. Ein vollständiger Scan einer winzigen Tabelle kann schneller sein als ein Index-Scan.

Beginnen Sie damit, die EXPLAIN PLAN-Ausgabe für jede der 29 SELECT-Anweisungen in Ihrer Abfrage abzurufen. Wenn einer von ihnen einen vollständigen Tabellenscan anzeigt, können Sie seine Leistung wahrscheinlich mit geeignete Indizes . (Oracle unterstützt viele verschiedene Arten von Indizes. Übersehen Sie nicht die Möglichkeiten für mehrspaltige Indizes.) In jedem Fall hilft Ihnen die Ausgabe von EXPLAIN PLAN dabei, die langsamsten der 29 SELECTs zu identifizieren.