COMPUTER ENGINEER

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

İndeksler ve performans

Bileşik anahtar, INCLUDE ve covering

Sütun sırası sorguyla birlikte değerlendirilir.

AnlaÖrneği inceleKendin uygula

Kavramı anlayalım

Bileşik indeks anahtarları sıralıdır. CustomerId eşitliği ve OrderDate aralığı kullanan sorgu için (CustomerId, OrderDate) iyi bir adaydır. Bu, “en seçici sütun her zaman ilk olur” kuralından daha bağlamsaldır. Sol anahtarın filtrelenmemesi daha az etkili erişim yaratabilir; motor yine scan seçebilir.

INCLUDE sütunları anahtar sırasına katılmaz, yaprakta sorgunun ihtiyaç duyduğu veriyi taşıyabilir. Covering sorguya göredir: bütün gereken sütunlar erişilebiliyorsa lookup gerekmez. Fazla INCLUDE, indeks boyutunu ve yazma maliyetini artırır. Key lookup az satırda uygundur; çok satırda pahalı olabilir. Gerçek plan, logical reads ve güncelleme maliyetiyle karar ver.

NERESİNDE KULLANIRSIN?

Tekrarlanan müşteri ve tarih sorgularını desteklemek için.

SIK YAPILAN HATA

INCLUDE sütununu sıralama anahtarı sanmak.

01 / UYGULAMA

Aynı konu. Üç farklı derinlik.

T-SQL / SQL Server 2019+
SELECT OrderId, OrderDate, Status FROM lab.SalesOrder WHERE CustomerId = 1 ORDER BY OrderDate;

İndeks adayı için sorgu desenini 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.

Müşteri 2 için Mart 2026 siparişlerini yarı açık aralıkla getir.

Çözümü ve açıklamasını göster
Açıklamalı çözüm
SELECT OrderId, OrderDate, Status FROM lab.SalesOrder WHERE CustomerId = 2 AND OrderDate >= '20260301' AND OrderDate < '20260401';

108 döner. Bu sorgu müşteri-tarih bileşik indeksine uygun bir adaydır; hız garantisi değildir.