03 Kasım 2009

Değişken Ağırlıklarda Rastgele İçerik

Bir web uygulamasında sık karşılaşabilecek küçük bir ayrıntıyı paylaşayım. Sitede bir bölümde rastgele içerik verildiğini düşünelim. Aynı zamanda bu içeriklerin bazılarını zaman zaman ön plana çıkarmak için tüm içerikler toplamları 100 yapacak şekilde farklı ağırlıklarda olsun.

Bu durumda bu içeriğin veritabanından en hızlı şekilde gelmesi gerekir. Bu performansı 2 küçük eklemeyle çözebiliriz.

Bu ağırlıkları tuttuğumuz alan weight olsun. Önce bu tabloya weightTotal isminde bir alan ekleyelim. Bu alan bulunduğu satıra kadar olan alanların (bulunduğu satır dahil) toplamını tutsun. weightTotal alanını da weight alanının güncellendiği durumlarda tüm weightTotal değerlerini güncelleyecek şekilde çalışacak bir trigger ile güncelleyelim.



Verinin çekilmesi esnasında da T-Sql içerisinde 1 ve 100 arasında rastgele bir sayı seçip bu sayıdan büyük en küçük weightTotal değerli alanı seçtiğimizde bu isteği performanslı bir şekilde çözebiliriz.