09 December 2016

SQL Index Yapıları

İndex ilişkili tablonun indexleme alanı olarak kullanılan kolondaki verilere göre sıralanmış biçimde işleme konulmasını sağlar. Eğer bir tablo indexlenmişse bu tablo içinde arama veya listeleme işlemi çok hızlı bir biçimde gerçekleştirilecektir.

İndexin başlıca kullanım amacı:

Veritabanının başarısını arttırmak.

İndex Kullanımı:

CREATE [ CLUSTERED | NONCLUSTERED ] INDEX isim ON tablo ( { kolon | ( ifade ) }

İndex Tipleri

Clustered index: Verilerin kendisinin index key (indexin verileceği kolon) değerine göre fiziksel olarak alfabetik sıralandığı index türüdür. Clustered Index bir tabloda maksimum bir tane olabilir.

Nonclustered index: Non-Clustered Index mimarisinde fiziksel bir sıralama söz konusu değildir. Index değeri, Clustered Index’in aksine verinin kendisi değil pointer değeridir. Bu pointer değeri verinin nerede olduğunu gösterir. Non-clustered Index bir tabloda maksimum 999 tane olabilir.(Sql Server 2008 için)

Örnek İndex Oluşturma:

create clustered index ix_Firstname
on Calisan (FirstName)

İndex Değerlerine Bakma:

dbcc showcontig ('Calisan')

Komutu çalıştırdığımızda oluşan “Scan Density [Best Count:Actual Count]…….: 100.00% ” satırı bizim için önemlidir. Scan Density oranı %50 nin altına düşerse indexi yeniden oluşturmalıyız. Yani rebuild veya reorganize yapmalıyız.

İndexi tekrar oluşturmak:

alter index ix_Firstname
on Calisan rebuild

Rebuild işlemi aslında index’i drop edip tekrar create etmektir.

İndex yapısını düzenlemek:

ALTER index ix_Firstname
on Calisan reorganize

Bir index’i reorganize etmek, clustered veya nonclustered Index’te bulunan leaf level page’lerin tekrardan fiziksel sıralamaya sokulması demektir. Bu da index üzerinde yapılan sorgulamaların daha performanslı çalışmasını sağlar.

Comments

  1. Led Tabela says:

    güzel bilgileri için teşekkürler

  2. Best practices olarak fragmante orani %5 – %30 arasinda ise

    REORGANIZE

    %30 dan buyuk ise

    REBUILD WITH (ONLINE = ON)

    kullaniliyor.