Zwiększanie wydajności zapytań za pomocą zmaterializowanych widoków
Zmaterializowane widoki to wstępnie napisane zapytania ze sprzężeniami i filtrami, których definicja jest zapisywana, a wyniki utrwalane w dedykowanej puli SQL. Nie są one domyślnie obsługiwane w bezserwerowych pulach SQL.
Zmaterializowane widoki zwiększają wydajność, ponieważ dane w widoku można pobrać bez konieczności rozpoznawania bazowego zapytania do tabel bazowych. Możesz również dodatkowo filtrować i uzupełniać inne zapytania tak, jakby była to również tabela. Ponadto można również zdefiniować inną dystrybucję tabeli w zmaterializowanej definicji widoku, która różni się od tabeli, na której jest oparta.
W związku z tym można użyć zmaterializowanych widoków, aby zwiększyć wydajność złożonych lub powolnych zapytań. W miarę zmiany danych w podstawowych tabelach bazowych dane w zmaterializowanym widoku będą automatycznie aktualizowane bez interakcji użytkownika.
Przed zdefiniowaniem zmaterializowanego widoku należy pamiętać o kilku ograniczeniach:
Lista SELECT w zmaterializowanej definicji widoku musi spełniać co najmniej jedno z następujących dwóch kryteriów:
- Lista SELECT zawiera funkcję agregacji.
- Funkcja GROUP BY jest używana w definicji zmaterializowanego widoku, a wszystkie kolumny w grupie GROUP BY znajdują się na liście SELECT. W klauzuli GROUP BY można używać maksymalnie 32 kolumn.
Obsługiwane agregacje obejmują WARTOŚCI MAX, MIN, AVG, COUNT, COUNT_BIG, SUM, VAR, STDEV.
W definicji jest obsługiwana tylko dystrybucja skrótów i round_robin tabel.
Tylko KLASTEROWANY INDEKS MAGAZYNU KOLUMN jest obsługiwany przez zmaterializowany widok.
Poniżej przedstawiono przykład tworzenia zmaterializowanego widoku o nazwie myview przy użyciu rozkładu skrótów wybierającego dwie kolumny z tabeli i grupowania według nich.
create materialized view mview
with(distribution=hash(col1))
as select col1, col2 from dbo.table group by col1, col2;