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

Leistung:Unterabfrage oder Beitritt

Moderne RDBMs, einschließlich Oracle, optimieren die meisten Verknüpfungen und Unterabfragen bis hin zum gleichen Ausführungsplan.

Daher würde ich fortfahren und Ihre Abfrage so schreiben, wie es für Sie am einfachsten ist, und mich darauf konzentrieren, sicherzustellen, dass Sie Ihre Indizes vollständig optimiert haben.

Wenn Sie Ihre endgültige Abfrage und Ihr Datenbankschema angeben, können wir Ihnen möglicherweise detaillierte Vorschläge machen, einschließlich Informationen zu möglichen Sperrproblemen.

Bearbeiten

Hier sind einige allgemeine Tipps, die für Ihre Anfrage gelten:

  • Stellen Sie bei Verknüpfungen sicher, dass Sie einen Index für die Spalten haben, die Sie verknüpfen. Stellen Sie sicher, dass Sie einen Index auf die verknüpften Spalten in beiden Tabellen anwenden. Sie denken vielleicht, dass Sie den Index nur in einer Richtung benötigen, aber Sie sollten beide indizieren, da die Datenbank manchmal feststellt, dass es besser ist, in die entgegengesetzte Richtung zu joinen.
  • Stellen Sie bei WHERE-Klauseln sicher, dass Sie Indizes für die in WHERE erwähnten Spalten haben.
  • Zum Einfügen vieler Zeilen ist es am besten, wenn Sie sie alle in einer einzigen Abfrage einfügen können.
  • Zum Einfügen in eine Tabelle mit einem Clustered-Index ist es am besten, wenn Sie mit inkrementellen Werten für den Clustered-Index einfügen, sodass die neuen Zeilen an das Ende der Daten angehängt werden. Dies vermeidet die Neuerstellung des Indexes und vermeidet häufig Sperren für die vorhandenen Datensätze, die SELECT-Abfragen für vorhandene Zeilen verlangsamen würden. Grundsätzlich werden Einfügungen für andere Benutzer des Systems weniger schmerzhaft.