Quick tip: 11. Indexed views vs. SQL Server Express

Widoki są tworem dość często wykorzystywanym w bazach SQL – dobrze zaplanowane bardzo ułatwiają pracę z bazą. Widoki indeksowane zapewniają lepszą wydajność zapytań. Niestety nie zawsze nasz indeks będzie brany pod uwagę podczas wykonania zapytania.

Załóżmy, że mamy w baze widok vEmployeesSales – prosty widok z jednym joinem i prostym grupowaniem. Widok ten ma zdefiniowany index – CIDX_vEmployees.

Standardowe zapytanie:

uwzględni nasz indeks jedynie w bazach w wersji Enterprise i Developer. Jeżeli korzystamy z popuplarnej (nawet w systemach produkcyjnych) wersji Express indeks zostanie pominięty.

Aby zachęcić optymalizator do wykorzystania naszego indeksu musimy do zapytania (po klauzuli FROM) dodać opcję WITH (NOEXPAND):

Różnicę widać na planie wykonania:

oraz w czasie wykonania – zapytanie 1 zajęło 57ms, zapytanie 2 poniżej 1ms.

Należy pamięć, że aby stworzyć indeks na widoku, widok ten musi zostać stworzony z opcją WITH SCHEMABINDING.

Na koniec ten sam test na bazie SQL2008 Enterprise:

1 Response

  1. Pingback: dotnetomaniak.pl

Comments are closed.