Join-Optimierung

Eine virtuelle Funktion ist eine spezielle Tabelle, die zu einer Menge von Eingabewerten eine Ergebniszeile zurückgibt, welche zur Laufzeit der Abfrage berechnet wird. Diese existiert nicht auf der Datenbank, sondern wird vom SAS emuliert. Diese Dokumentation beschreibt im Folgenden die virtuelle Funktion für die explizite Joint-Optimierung.

1                     Begriffsbestimmung

Virtuelle Funktion

Eine virtuelle Funktion ist eine spezielle Tabelle, die zu einer Menge von Eingabewerten eine Ergebniszeile zurückgibt, welche zur Laufzeit der Abfrage berechnet wird. Diese existiert nicht auf der Datenbank, sondern wird vom SAS emuliert. Eine virtuelle Funktion wird normalerweise an eine andere Tabelle verbunden, um diese um die berechneten Felder zu erweitern.

2                     Zielgruppe

  • Consultants
  • Entwickler

3                     Join-Optimierung

Die virtuelle Funktion „pgm_JoinOptimization“ wird verwendet, um die Join-Optimierung für eine gejointe Tabelle eines Business Objects zu erzwingen. Die Tabellen zu Business Objects mit der Datenart „Stammdaten“ werden, wenn möglich, automatisch aus dem auszuführenden ODBC-SQL-Statement entfernt und über den Persistenzdienst des Application-Servers unter Nutzung des Shared-Cache nachgeladen. Durch die Vereinfachung der Datenbankanweisung und durch Nutzung des Shared-Cache wird in der Regel die Ausführungsgeschwindigkeit des Berichtes steigen. Durch die Verwendung dieser virtuellen Funktion kann das beschriebene Verhalten auch für Tabellen von Business Objects mit einer anderen Datenart (z.B. Bewegungsdaten) erzwungen werden. Dazu wird die virtuellen Funktion zwischen den eigentlichen Join geschaltet. Die virtuelle Funktion wird mit der Basis-Tabelle über die in der Join-Bedingung verwendeten Spalten mit den Eingabeparametern des entsprechenden Typs verknüpft. Die zu joinende Tabelle wird über deren Schlüsselspalten mit den zugehörigen Spalten der virtuellen Funktion verknüpft. Es gelten die Einschränkungen für die Verwendung von virtuellen Funktionen.

Die virtuelle Funktion unterstützt derzeit nur Schlüssel von Business Objects, die aus maximal zwei GUID-Attributen bestehen.

Die Tabelle hat folgende Spalten:

pgm_JoinOptimization
Spaltenname Beschreibung
in_guid1_ Diesem Eingabeparameter kann eine GUID zugewiesen werden.
in_guid2 Diesem Eingabeparameter kann eine GUID zugewiesen werden.
Beispiel

Zu der Vertriebsauftragsposition soll der zugehörige Vertriebsauftrag ausgegeben werden. Das nachstehende ODBC-SQL-Statement wird komplett auf der Datenbank ausgeführt:

SELECT SD.number, S.number

FROM app_sales_SalesOrderDetail SD LEFT OUTER JOIN app_sales_SalesOrder S ON SD.header_=S.guid_

Um die Daten des Vertriebsauftrages unter Nutzung des Shared Cache zu lesen, wird der Join zweistufig über die virtuelle Funktion “pgm_JoinOptimization“ formuliert:

SELECT SD.number, S.number

FROM (app_sales_SalesOrderDetail SD LEFT OUTER JOIN  pgm_JoinOptimization VF ON VF.in_guid1_=SD.header_) LEFT OUTER JOIN app_sales_SalesOrder S ON S.guid_=VF.in_guid1_

Der ODBC-Server entfernt die virtuelle Funktion und abhängige Tabellen aus dem ODBC-SQL-Statement und lädt die benötigten Daten über den Persistenzdienst nach.

 

Czy ten artykuł był pomocny?