COMPUTER ENGINEER

Örneklere git
Blog
SQL Server / T-SQL6 dk çalışma
47/ 65

İndeksler ve performans

Filtered indeks ve hesaplanan sütunlar

İş yükünün anlamlı alt kümesini hedefle.

AnlaÖrneği inceleKendin uygula

Kavramı anlayalım

Filtered indeks yalnız koşulu sağlayan satırları taşır. Az sayıdaki Pending sipariş için daha küçük indeks ve o alt kümeye özgü istatistik sağlayabilir. Ancak sorgu koşulu indeks filtresini mantıksal olarak kapsamalıdır; parametreli sorguda derleme sırasında bu garanti görülmeyebilir. Filtre dili sınırlıdır: basit karşılaştırmalar desteklenir, LIKE ve karmaşık ifadeler her yerde kullanılamaz.

Hesaplanan sütun bir ifadeyi isimlendirir; PERSISTED değeri saklar. İndekslenebilirlik için determinism, precision ve gerekli SET seçenekleri önemlidir. Bir hesaplanan sütunu filtered indeks filtresinde kullanmak desteklenmez. Önce resmi kısıtları incele, sonra yalnız lab veya test ortamında dene. Üretimde oluşturma işlemi kilit ve depolama gerektirir.

NERESİNDE KULLANIRSIN?

Seyrek durumları ve tekrar kullanılan ifadeleri optimize etmek için.

SIK YAPILAN HATA

Her dinamik filtre sorgusunun filtered indeksi kullanacağını sanmak.

01 / UYGULAMA

Aynı konu. Üç farklı derinlik.

T-SQL / SQL Server 2019+
SELECT OrderId, OrderDate FROM lab.SalesOrder WHERE Status = 'Pending';

104 ve 112 alt kümesini tanımlar.

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.

02 / SIRA SENDE

Önce kendin dene.

Sıfır stoklu ürünler için geçici filtered indeks adayı kur.

Çözümü ve açıklamasını göster
Açıklamalı çözüm
DROP TABLE IF EXISTS #OutOfStock;
SELECT * INTO #OutOfStock FROM lab.Product;
CREATE INDEX IX_EmptyStock ON #OutOfStock(ProductId) INCLUDE (ProductName) WHERE Stock = 0;

Bu bir aday tasarımdır. Küçük lab’da performans kazancı beklemek gerekmez.