Zwiększanie wydajności zapytań za pomocą zmaterializowanych widoków

Ukończone

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;