gereksinim ile ilgili konular, eğer düz bir blog sitesi isen pageview kısmını loglardan parse ederek de hazırlatabilirsin, trigerlar ile de yapabilirsin, X tablosundan yapılan her bir select işlemi için şu tablonun şu alanlarını +1 yap gibi, eğer çok yüksek trafik alıyorsan realtime analiz istiyorsan başka çözümlere gidersin.
bir web sitesi için kullanıcı, siparişler, sipariş dıurumu gibi bişi yapıyorsan 3 tabloyu join etmek yerine tek tek primary key kullanarak kodun içinde yapabilirsin ve gerçekten de çok hızlı olabilir, ancak patron son 3 ayda aktif kullanıcıların sipariş sayısını oranlayarak vermeni isterse o zaman joinleri kullanarak 4,5 tabloyu kullanarak bir sorgu hazırlarsın, bu sırada db'nin zorlanması web sitesinin bir iki dakika için geç açılması sorun olmayacaksa zaten bu sorgu da ayda bir belki bir daha bile çalışmayacak.
eğer sürekli çalışacak ve tasarım gereği bol joinli bir sorgun varsa bunu bir store procedure yapmak backend'e bırakmaktan daha mantıklı, zira her bir sorgu da parse et, analiz et, çalıştırma planı hazırla, vb. tüm işleri bir store procedure'u kaydettiğinde tek bir seferde yapıyor, güncellemesi, vb. daha kolay elbette sistem buna izin veriyorsa.
her şey gereksinime göre değişiyor. veri tabanını sadece veri tuttuğun ve sorguladığın yer olarak düşünmemelisin, veri tabanının gücü analiz yeteneğinden geliyor. yoksa çok daha basit veri yapıları kullanarak kendi basit db'ni yazarak çok daha yüksek performans alabilirsin ancak patron senden rapor isterse elinde patlar.
+2