COMPUTER ENGINEER

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

İndeksler ve performans

Clustered ve nonclustered indeksler

Okuma hızının yazma bedeli vardır.

AnlaÖrneği inceleKendin uygula

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.

NERESİNDE KULLANIRSIN?

Sorguya uygun erişim yolunu tasarlamak için.

SIK YAPILAN HATA

Her scan’i hata, her seek’i başarı sanmak.

01 / UYGULAMA

Aynı konu. Üç farklı derinlik.

T-SQL / SQL Server 2019+
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.

02 / SIRA SENDE

Önce kendin dene.

Customer tablosundaki mevcut indeksleri listele.

Çözümü ve açıklamasını göster
Açıklamalı çözüm
SELECT name, type_desc, is_unique FROM sys.indexes WHERE object_id = OBJECT_ID(N'lab.Customer');

Bu metadata okuması tabloya yeni indeks eklemez.