Veritabanı sorgu performansını etkileyen en önemli konulardan bir tanesi indexleri doğru uygulamaktır. Uygulamanızın tablolarda nasıl sorgular yapacağını, hangi alanları sıkça kullanacağını önceden tahmin ederek indexlemesini tablo oluştururken yapmak uygulama performansını da yükseltecektir.
Bu kısa makalede Veritabanı indexlerinin Devexpress XPO ile nasıl oluşturulacağını ve kullanılacağını anlatmaya çalışacağım.
Baştan bunu söylemem lazım...
Devexpress XPO'nun en beğendiğim özelliklerinden bir tanesi objeleri tanımlarken indexleri de beraberinde oluşturabilmesidir.
Önemli Not 1: Daha önce oluşturulan tablolar üzerinde index oluşturabilirsiniz. Bunu yapmadan önce tablonun büyüklüğünü de göz önünde bulundurarak index oluşturma süresine bağlı olarak gecikme olabileceğini dikkate alın. Hatta benim tavsiyem daha önce oluşturulmuş ve içinde100k üzeri veri olan tablolarda index oluşturmamanızdır. Mümkünse manuel olarak veritabanından oluşturduktan sonra bağlantı yapın.
Önemli Not 2: String alanlarının boyutu büyükse bunlar için index oluşturmayın. Beklenmedik hatalar alabilirsiniz. Bu hatalar da genelde veritabanı bazlı hatalar olur. Örnek: index Oracle'de çok iyi sonuç verirken, SQL Server veya Postgres üzerinde hata oluşmasına neden olabilir.
Önemli Not 3: Obje bağlantıları için index oluşturmanıza gerek yok. XPO foreign key bağlantıları için otomatik index oluşturur.
Gelelim Devexpress XPO ile indexleri nasıl tanımlayacağımıza...
Index tanımlaması aşağıdaki gibi bir kodu Property'ye eklenmesi ile mümkün oluyor:
[Indexed(Unique =false, Name ="tablename_index_propertyname")]
Gördüğünüz gibi çok basit bir uygulama mevcut. İndexed parametresinin iki değerini belirliyoruz. Bunlardan birincisi alanın tekil olup olmayacağı. Bunun için Unique alanının değerini değiştirmemiz yeterli. Eğer bu bilgiyi vermezsek default değeri false olacaktır. Diğer parametremiz ise index adıdır. Otomatik oluşturulan indexler ile kendi indexlerinizi ayırmak için bu parametreyi de mutlaka kullanın. Eğer kullanmazsanız XPO Property adına göre otomatik isimlendirme yapacaktır.
Örnek kullanım için aşağıdaki örneği vermek istiyorum.
[Indexed(Unique =true, Name ="kullanicilar_index_kullaniciadi")]
public string KullaniciAdi { get; set; }
Konuyla ilgili sorularınız olursa yorumlar kısmından bana yazabilirsiniz.
Yorumlar
Yorum Gönder