
Öncelikle bu makalemizde sizlere;
Unique sözcüğünün ne olduğunu
- Karma (Composite) ındex,
- Kapsam (Covering) ındex,
- Parçalı ındexler,
- Eklenti sütunlu indexler,
- Filtreli indexler,
- XML ındexler,
- Full-Text ındexler
- FILLFACTOR ve PAD INDEX Parametrelerinden bahsedeceğim
Unique sözcüğü
Bir tablo indexleme alanı olarak seçilen sütundaki verilerin tekrarlanması
istenmiyorsa indexleme yapılırken “Is Unique” kutusu Yes olarak işaretlenmelidir.
Biz isim sütunu için oluşturduğumuz indexin Unique index olmasını sağlarsak aynı
isme sahip 2 farklı öğrencinin tabloya eklenmesine engel olmuş oluruz.
Unique olarak indexlenmiş olan sütuna aynı kayıttan 2. kez
girmeye çalıştığımızda aşağıdaki gibi bir hata ile karşılaşırız.
SQL Server Index Türleri
Clustred ve non-clustred indexlerin her ikisi üstünde de geçerli olabilecek
bazı durumIar vardır.
Bu durumları burada açıklamaya çalışalım:
Unique ındex
Index'teki verilerin tekrarlanmaması maksadıyla kullanabiliriz.
Bunun için,
bir indexi UNIQUE deyimi ile tanımlamak yeterlidir.
Hem veri çekme işlemlerini
hızlandırmada hem de verinin tekrarlamamasını denetlemede aynı index
kullanılabilir.
UNIQUE index clustered türden olabileceği gibi nonclustered türden
de olabilir.
Primary Key Constaint veya Unique Constraint tanımı yapıldığı zaman,
SQL Server bir Unique Index tanımlama işlemini gerçekleştirir.
Bu türden bir
Constranit'ı tanımlanırken SQLServer'e clustered olup olmayacağı hakkında bilgi
verilebilir.
Karma (Composite) ındex
İlişkisel veri tabanında, bir indexin ister tekil, ister çoğul index olsun bir tek
alandan ibaret olması sık rastlanan bir durumdur ancak bu bir kural değildir.
Gerektiğinde 16 sütun veya toplam uzunluklar 900 Byte'i aşmamak üzere birden
fazla alanı kapsayan ve composite index olarak isimlendirilen bir index
tanımlanabilir.
Ayrıca SQL Server 2005'ten itibaren, non-clustred indexlerde
anahtar olmamak koşulu ile uç seviye sayfalarda 900 Byte'dan daha fazla veriyi de
eklenti sütun (included column) olarak içerebilir.
Kapsam (Covering) ındex
Bir sorgunun where kısmı da dâhil olmak üzere, seçilen sütunları ile birlikte
bir tek index olarak tanımlanmasına Covering Index denir.
Bu türden bir nonclustred index tanımlandığında, SQL Server sadece bu indexi kullanır.
Covering
index genellikle oluşturulurken çok işlem gerektirir ama sorgunun çok hızlı
neticelenmesini sağlar.
Ancak Covering Index tanımlarken, Indexler arası bölge kavramına (clustred
index içerisindeki sütunu tekrar indexe dâhil etmek gerekmez) ve sorgulanan
sütunlarla, indexlenen sütunların sırasına dikkat ederek tanımlanması gerekir.
Parçalı ındexler
Parçalı indexler, SQL Server 2005 ile birlikte gelen bir index türü olup farklı
fiziksel dosya gruplarına dağıtılmış indexlere verilen isimdir.
Fiziksel olarak farklı
disklere dağılmış indexler, paralel I/O performansını artırır ve kaynak
çekişmelerinin önüne geçer.
Parçalı indexler de clustred veya non-clustred olabilir.
Eklenti sütunlu indexler
Eklenti sütunlu indexler, SQL Server 2005 ile gelen bir özellik olup index
anahtar değerleri dışında, index yapısının en uç sayfalarında gerçek veriler de
tutularak sorguların hızlandırılması sağlanabilir.
Filtreli indexler
Filtreli indexler, bir tabloda yer alan belli sütunlar için bütün kayıtları
indexlemek yerine sadece kurala uyan satırları indexlemek amacıyla kullanılabilen
ve SQL Server 2008 ile birlikte kullanıma sunulan bir yapıdır.
XML ındexler
SQL Server, XML Sütunlar üstünde de sorguların hızlanmasını sağlamak
üzere index tanımlanmasına izin verir.
Ancak XML indexler, veri tabanı
indexlerine göre biraz farklılık içerir ve daha fazla ön şart gerektirir.
Full-Text ındexler
Full-text indexler, özellikle metin ifadelerin farklı formları ve dil
kurallarından bağımsız olarak hızlı sorgulanmaları maksadıyla tercih edilir.
SQL
Server 2008 sürümünden itibaren Fulltext indexler veri tabanı motoru ile
bütünleştirilmiş durumdadır.
Yapıları diğer indexle aynı olmasına rağmen, birçok
yönü ile diğer tür indexlerden farklılık gösterir.
FILLFACTOR ve PAD INDEX Parametrelerine Karar Vermek
Bir OLTP sistemde, sürekli olarak INSERT, UPDATE ve DELETE işlemleri
olduğundan, index sayfalarında boş alanlar bırakarak gitmek daha akıllıca olur.
OLAP için ise Index sayfalarının daha dolu olması tercih edilir.
Bu işlemler için, FILL
FACTOR ve PAD_INDEX parametresi kullanılabilir. FILL FACTOR, uç seviye sayfaların
ne kadar doluluk oranlarında olacağını tayin eder.
PAD_INDEX ise bu oranın uç
seviyenin dışındaki sayfalarda da geçerli kılınıp kılınmayacağını ifade etmek için
kullanılır.
PAD_INDEX denilmezse ara seviye sayfalar (intermediate
pages) için en az iki index sığacak kadar olmak üzere SQL Server tarafından
uygun bulunan miktarda boş yer bırakılır.
Hiç yorum yok
Yorum Gönder