Was sind indexierte Views?
Eine indexierte View (auch "materialized view" genannt) ist eine View mit einem eindeutigen Clustered Index. Dadurch werden die Abfrageergebnisse physisch gespeichert und bei Änderungen der Basistabellen automatisch aktualisiert.
Wann indexierte Views einsetzen?
Ideale Szenarien:
Komplexe Aggregationen (SUM, COUNT, AVG)
Joins über mehrere große Tabellen
Häufig ausgeführte, ressourcenintensive Abfragen
Read-heavy Workloads mit seltenen Updates
Beispiel:
sql
-- View für monatliche Verkaufsstatistiken
CREATE VIEW dbo.MonthlySalesStats
WITH SCHEMABINDING
AS
SELECT
YEAR(OrderDate) AS Year,
MONTH(OrderDate) AS Month,
ProductID,
COUNT_BIG(*) AS OrderCount,
SUM(Quantity) AS TotalQuantity,
SUM(Revenue) AS TotalRevenue
FROM dbo.Orders o
INNER JOIN dbo.OrderDetails od ON o.OrderID = od.OrderID
GROUP BY YEAR(OrderDate), MONTH(OrderDate), ProductID;
-- Clustered Index erstellen
CREATE UNIQUE CLUSTERED INDEX IX_MonthlySalesStats_YearMonthProduct
ON dbo.MonthlySalesStats (Year, Month, ProductID);
Performance-Vorteile
Sofortige Ergebnisse: Keine Berechnung zur Laufzeit
Optimaler Zugriff: Query Optimizer nutzt Index automatisch
Reduzierte CPU-Last: Aggregationen bereits vorberechnet
Wartung indexierter Views
Indexierte Views benötigen dieselbe Wartung wie Tabellen-Indizes.