İndekslenmiş görünüm (Indexed View, indeksle birlikte malzeme görünümü) — kümeleme benzersiz indeksi olan bir görünümdür (VIEW). Bu, sorgu sonuçlarını diskte fiziksel olarak depolamayı ve erişimi hızlandırmak için indeksi kullanmayı sağlar.
Avantajları:
Sınırlamalar:
TEXT, NTEXT, IMAGE veri türlerini kullanmak mümkün değildir, bazı fonksiyonlar kullanılamaz).CREATE VIEW dbo.SalesSummary WITH SCHEMABINDING AS SELECT SalesPersonID, COUNT_BIG(*) AS SalesCount, SUM(TotalDue) AS TotalDue FROM dbo.Sales GROUP BY SalesPersonID; GO CREATE UNIQUE CLUSTERED INDEX idx_SalesSummary ON dbo.SalesSummary (SalesPersonID);
S: Tüm görünümler üzerinde indeks (küme) oluşturmak mümkün müdür?
C: Hayır, yalnızca sınırlamalara tamamen uyan VIEW'ler üzerinde indeks oluşturulabilir (örneğin, dış bağlantılar olmamalıdır, agregat fonksiyonlar uyumlu olmalıdır vb.). Aksi takdirde, indeks yaratma sorgusu hata verecektir.
Hikaye
Gerçek bir projede, bankacılık sistemindeki toplu raporların sorgulamalarını hızlandırmak gerekiyordu. Tablo güncellemeleri üzerindeki yükü analiz etmeden indekslenmiş VIEW oluşturuldu. Toplu ekleme işlemleri sırasında, görünüm endeksinin güncellenmesi için yüksek maliyetler nedeniyle ana tablonun performansı düşmüştür.
Hikaye
Uzman, dış bir tabloya belirli bir JOIN ile VIEW'yi indekslemenin mümkün olduğunu düşündü ve GETDATE() fonksiyonu kullandı. İndeks oluşturma isteği "Non-deterministic functions içerdiği için görünüme indeks yaratılamaz" hatasıyla sonuçlandı. Proje mimarisini düzeltmek için bir gün harcandı.
Hikaye
Büyük bir e-ticaret projesinde temel "Products" tablosundaki veri güncellemeleri, ortaya çıkan kilitlenmelerin nedeni oldu. Sebep — büyük bir indekslenmiş VIEW üzerinde, milyonlarca satırı etkileyen bir toplam hesaplama sırasında işlem yönetiminin yanlış yapılmasıdır.