
Sql server index kullanımı ve yönetimi;
Veritabanları verilerimizi saklar bir veritabanı içinde bulunan kayıt sayısı arttıkça performansta bir düşüklük yaşanır bizim için ise sorgularımızı hızlı bir şekilde gerçekleştirmek verileri hızlı bir şekilde açmak çok önemlidir.
Sql server verileri nasıl açar ?
Örnek bir sorgu yazarak gösterelim
Select isim from deneme where ad like e% // sql server bunu yazdığımız anda tablo içindeki tüm sayfaları tek tek aramaya başlar ve ismi e harfi ile başlayanları (bizim belirlediğimiz kriterlere uyan kayıtları) listeler. Tabi bu işlemi yaparken tablonun başından başlar ve bu verilere erişim hızını düşürür.
Diğer bir yöntem ise indexleme kullanımıdır sql server sorgu çalıştırıldığında öncelikle bir index olup olmadığını kontrol eder.
Neden index oluşturulur?
Başlıca neden tabiki hızlı erişim örneğin kitapların arka kapaklarında index bölümü vardır. Diyelim ki kitabın içinde group by terimini arıyorsunuz bunun için ya bin küsür sayfalık kitabın bütün sayfalarını tarayacaksınız yada index bölümünden alfabetik olarak o terimin hangi bölümünde kaçıncı sayfada olduğunu hemen kolaylıkla bulacaksınız J
Hemen basit bir örnekle nasıl index oluşturacağımızı anlatalım;
- Öncelikle deneme isimli bir veritabanı oluşturuyoruz ve bu veritabanına index adında bir tablo ekliyoruz

- Gelen ekrana add şekildeki gibi değişiklikleri yapıyoruz created as clustered seçeneğine yes yapıp close diyerek kaydediyoruz.

- Kayıtları tekrar görüntülediğimizde ise aşağıdaki gibi kayıtlarımız alfabetik olarak listelenecektir ve her veri girdiğimizde veriler otomatik sıraya sokulacaktır.

Indexin faydasını anlamak için bir örnek verceğim diyelim bir kitapçı veritabanımız olsun ve yazar isimlerine index uygulamış olalım ve aşağıdaki sorguyu yazalım;
Select * from kitap where yazar between ‘MehmetAfik’ and ‘YaşarKemal’
Bu sorgunun sonucunda dönecek olan kayıtlar yine alfabetik olarak listelenecektir. J
SQL-Server bütün indexler hakkındaki en önemli verileri(sayfa sayısı, veri, satır sayısı….) sysindexes system tablsu içerisinde tutar.
SELECT * FROM sys.sysindexes dediğimizde ;
Tablo karşımıza çıkar en önemli sutunlar ise id ve indid sutunudur id sutunu tablonun ve indexin id sini kimliğini belirtir, indid sutunu ise nesnelerin özelliklerini tutar.


