İndeksler ve performans
Clustered ve nonclustered indeksler
Okuma hızının yazma bedeli vardır.
Kavramı anlayalım
İndeks, belirli erişim desenlerini destekleyen veri yapısıdır. Rowstore clustered indeksin yaprak seviyesinde tablo satırları bulunur; tablo başına yalnız bir clustered indeks olabilir. Clustered olmayan tablo heap’tir. Nonclustered indeks anahtarları ve satıra erişim locator’ını taşır. Clustered anahtar locator olarak kullanıldığında geniş anahtar diğer indeksleri de büyütebilir.
İndekslerin INSERT, UPDATE, DELETE, depolama ve bakım maliyeti vardır. Her sütuna indeks eklemek çözüm değildir. Küçük lab tablosunda scan seçilmesi normaldir; seek her zaman daha ucuz değildir. Sorgu filtresi, sıralaması ve seçtiği sütunlarla birlikte gerçek iş yükünü incele. PRIMARY KEY ile clustered indeks aynı kavram değildir; varsayılanlar bu ayrımı gizleyebilir.
Sorguya uygun erişim yolunu tasarlamak için.
Her scan’i hata, her seek’i başarı sanmak.
Aynı konu. Üç farklı derinlik.
SELECT name, type_desc FROM sys.indexes WHERE object_id = OBJECT_ID(N'lab.Product');Mevcut indeks türlerini gör.
Bu sayfa SQL çalıştırmaz. Örnekleri indirilebilir SqlStudioLab veritabanında, SSMS’de uygula. Geçici tablo örneklerini yeniden çalıştırırken yalnız ilgili #tabloyu temizle. VIEW, procedure ve function örnekleri lab’da kalıcı nesne oluşturur; üretim bağlantısı kullanma.
Önce kendin dene.
Customer tablosundaki mevcut indeksleri listele.
Çözümü ve açıklamasını göster
SELECT name, type_desc, is_unique FROM sys.indexes WHERE object_id = OBJECT_ID(N'lab.Customer');Bu metadata okuması tabloya yeni indeks eklemez.