SQL Server Indexes

SQL Server Index

SQL Server Index nedir, nasıl kullanılır? Etkili yöntemler ve kod örnekleri burada.

Mart 31, 2023

Bu rehber, tüm temel SQL Server index türleri‘ni ve her birinin ne zaman kullanılacağını kapsar. SQL Server’da index, veriye hızlı erişim sağlayan ve sorgu performansını doğrudan etkileyen en temel yapılardan biridir. Bu yazıda index’in ne olduğunu, hangi türlerin ne zaman kullanılacağını, basit bir CREATE INDEX örneğini ve index bakımının nasıl yapılacağını pratik örneklerle anlatıyoruz.

SQL Server’da Index Nedir?

Index, bir veya birden fazla sütunun değerlerini sıralı şekilde tutan ve bu değerleri tablodaki satırlara işaret eden bir referansla eşleştiren bir veri yapısıdır. Bir kitabın arka sayfasındaki dizin gibi düşünebilirsiniz: doğru index olmadan SQL Server, aradığı satırı bulmak için tablonun tamamını taramak (table scan) zorunda kalır; index varsa doğrudan ilgili satıra gider.

SQL Server index yapısı

SQL Server Index Türleri

  • Clustered Index: Verilerin tablo üzerindeki fiziksel sırasını belirler. Bir tabloda yalnızca bir tane olabilir — genellikle primary key üzerinde otomatik oluşur.
  • Non-Clustered Index: Tablonun fiziksel düzenine dokunmadan, belirtilen sütun(lar) için ayrı bir arama yapısı oluşturur. Bir tabloda birden fazla non-clustered index olabilir.
  • Unique Index: İlgili sütun(lar)da tekrar eden değerlere izin vermez; veri bütünlüğünü zorunlu kılar.
  • Filtered Index: Tablonun yalnızca belirli bir WHERE koşulunu sağlayan alt kümesi üzerinde oluşturulur — örneğin sadece IsActive = 1 olan satırlar. Daha küçük ve daha hızlı olur.
  • Columnstore Index: Veriyi satır bazlı değil, sütun bazlı sıkıştırarak saklar. Büyük veri kümeleri üzerinde çalışan raporlama/analitik sorgularda (data warehouse senaryoları) dramatik performans artışı sağlar.
  • Full-Text Index: Metin sütunlarında kelime/ifade bazlı arama yapılmasını sağlar, klasik LIKE '%...%' aramalarından çok daha hızlıdır.
SQL Server Danışmanlığı

SQL Server için Uzman Desteğine mi İhtiyacınız Var?

Kıdemli veritabanı ekibimiz SQL Server performans ayarlama, sağlık kontrolleri, migrasyonlar, Remote DBA hizmetleri ve acil operasyonel sorunlarda destek sağlar.

Hizmetlerimizi İnceleyin

Basit Bir Örnek: Index Nasıl Oluşturulur?

Bir Orders tablosunda CustomerId sütununa göre sık sorgu atıyorsanız, non-clustered bir index şöyle oluşturulur:

CREATE NONCLUSTERED INDEX IX_Orders_CustomerId
ON dbo.Orders (CustomerId)
INCLUDE (OrderDate, TotalAmount);

Buradaki INCLUDE ifadesi, sık kullanılan ek sütunları index’in yaprak seviyesine ekleyerek SQL Server’ın tabloya hiç gitmeden (key lookup yapmadan) sorguyu index üzerinden tamamlamasını sağlar — buna covering index denir.

Index Bakımı: Fragmantasyon Nasıl Takip Edilir?

Zamanla yapılan insert/update/delete işlemleri index’lerde fragmantasyona (dağınıklığa) yol açar. Aşağıdaki sorgu, bir veritabanındaki en fragmante index’leri listeler:

SELECT OBJECT_NAME(ips.object_id) AS TableName,
       i.name AS IndexName,
       ips.avg_fragmentation_in_percent
FROM sys.dm_db_index_physical_stats(DB_ID(), NULL, NULL, NULL, 'LIMITED') ips
JOIN sys.indexes i ON ips.object_id = i.object_id AND ips.index_id = i.index_id
WHERE ips.avg_fragmentation_in_percent > 10
ORDER BY ips.avg_fragmentation_in_percent DESC;

Genel kural: fragmantasyon %5-30 arasındaysa REORGANIZE, %30’un üzerindeyse REBUILD tercih edilir.

Ne Zaman Index Eklemeli, Ne Zaman Eklememeli?

  • Ekleyin: WHERE, JOIN ve ORDER BY ifadelerinde sık kullanılan, seçiciliği yüksek (az tekrar eden değer içeren) sütunlarda.
  • Eklemeyin: Sık güncellenen ama nadiren sorgulanan sütunlarda, ya da zaten çok sayıda benzer index varken — her ekstra index, her INSERT/UPDATE işleminde ek bakım maliyeti getirir.
  • Kontrol edin: sys.dm_db_index_usage_stats DMV’si ile hangi index’lerin gerçekten kullanıldığını, hangilerinin sadece disk alanı kapladığını düzenli olarak gözden geçirin.

Doğru sayıda, doğru sütunlarda kurulmuş index’ler sorgu performansını kat kat artırır; gereksiz veya eksik index’ler ise tam tersi etki yaratır — bu yüzden index stratejisi tek seferlik değil, sürekli gözden geçirilmesi gereken bir süreçtir.

SQL Server Performans Danışmanlığı

İndeksleme Stratejiniz Performansı mı Düşürüyor?

Aryasoft, mevcut indeks yapınızı analiz eder, gereksiz/eksik indeksleri tespit eder ve sorgu performansınızı iyileştirir.

Performans Desteği Alın

4.7/5