SQL Server 2008 wprowadza widoki partycjonowane. Służą one do optymalizacji zapytań na bardzo dużej ilości danych. Rozważmy scenariusz w którym mamy 12 tabel, przechowujących archiwalne informację o sprzedaży np. JanuarySales, FebruarySales, MarchSales itd. Dane przechowywane w tych tabelach różnią się tylko czasem (dana tabela przechowuje wyłącznie informacje z określonego miesiąca). Aby móc skorzystać z widoku partycjonowanego należy użyć ograniczenia CHECK na kolumnie, będącej kryterium podziału:
CREATE TABLE JanuarySales ( OrderID INT, Month INT CHECK (Month = 1), CONSTRAINT OrderIDMonth PRIMARY KEY(OrderID, Month) )
Budowanie partycjonowanego widoku niczym nie różni się od klasycznego widoku:
CREATE VIEW Sales AS SELECT * FROM JanuarySales UNION ALL SELECT * FROM FebruarySales UNION ALL SELECT * FROM MarchSales ...--i tak dla reszty miesiecy
Widok Sales jest teraz partycjonowany. Co to oznacza? Załóżmy, że teraz wykonujemy poniższe zapytanie:
SELECT * from Sales WHERE Month in (1,2) and Price>1
SQL Server zoptymalizuje zapytanie i będziemy przeszukiwać tak naprawdę wyłącznie tabele JanuarySales i FebruarySales. Zamiast przeszukiwać 12 tabel, będziemy szukać danych tylko w 2 tabelach.