Optymalizacja join

Przegląd tematu

Funkcja wirtualna to specjalna tabela, która zwraca wiersz wyników dla zestawu wartości wejściowych, obliczany w czasie wykonywania zapytania. Funkcja ta nie istnieje w bazie danych, ale jest emulowana przez SAS. W artykule opisano funkcję wirtualną dla jawnej optymalizacji złączeń (join).

Grupa docelowa

  • Konsultanci
  • Programiści aplikacji

Optymalizacja złączeń

Funkcja wirtualna pgm_JoinOptimisation służy do wymuszania optymalizacji złączenia dla połączonej tabeli obiektu biznesowego. Tabele obiektów biznesowych z typem danych Dane podstawowe, jeśli to możliwe, są automatycznie usuwane z instrukcji ODBC SQL, która ma zostać wykonana i ponownie załadowana za pośrednictwem Persistence service serwera aplikacji przy użyciu współdzielonej pamięci podręcznej. Uproszczenie instrukcji bazy danych i wykorzystanie współdzielonej pamięci podręcznej zwiększają szybkość wykonywania raportu. Korzystając z tej funkcji wirtualnej, opisane zachowanie można również wymusić dla tabel obiektów biznesowych o innym typie danych (np. danych operacyjnych). W tym celu funkcja wirtualna jest wstawiana między faktyczne złączenia (join). Funkcja wirtualna jest połączona z tabelą bazową za pośrednictwem kolumn używanych w warunku złączenia, które są przekazywane jako parametry wejściowe odpowiedniego typu. Tabela, która ma zostać połączona, jest połączona z odpowiednimi kolumnami funkcji wirtualnej za pośrednictwem jej kolumn kluczowych. Obowiązują ograniczenia dotyczące korzystania z funkcji wirtualnych.

Funkcja wirtualna obsługuje obecnie tylko klucze z obiektów biznesowych, które składają się z maksymalnie dwóch atrybutów GUID.

Tabela składa się z następujących kolumn:

Nazwa kolumny Opis
in_guid1_ Do tego parametru wejściowego można przypisać identyfikator GUID.
in_guid2 Do tego parametru wejściowego można przypisać identyfikator GUID.
Przykład
Powiązane zamówienie sprzedaży ma zostać wystawione dla pozycji zamówienia sprzedaży. Następująca instrukcja ODBC SQL jest wykonywana w całości w bazie danych:

SELECT SD.number, S.number

FROM app_sales_SalesOrderDetail SD

LEFT OUTER JOIN app_sales_SalesOrder S

ON SD.header_=S.guid_

Połączenie jest formułowane w dwóch etapach przy użyciu funkcji wirtualnej pgm_JoinOptimisation co umożliwia wykorzystanie danych zamówienia sprzedaży za pośrednictwem współdzielonej pamięci podręcznej:

SELECT SD.number, S.number

FROM (app_sales_SalesOrderDetail SD

LEFT OUTER JOIN pgm_JoinOptimisation VF

ON VF.in_guid1_=SD.header_)

LEFT OUTER JOIN app_sales_SalesOrder S

ON S.guid_=VF.in_guid1_

Serwer ODBC usuwa funkcję wirtualną i tabele zależne z instrukcji ODBC SQL i ponownie ładuje wymagane dane za pośrednictwem Persistence service.

Czy ten artykuł był pomocny?