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. |
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.