Merhabalar,
Bugün sizlere verinin sayfalanması (paging ) işlemini SQL Server ile nasıl yapabileceğimizi göstereceğim. Bu konu ile ilgili olarak SQL Server 2012 ile yaşantımıza girmiş OFFSET and FETCH özelliğinden bahsediyor olacağım.
-
SQL Server 2012 ile OFFSET and FETCH Özelliğinin kullanımı
İlk n kaydı hariç tutmak için genel sözdizimi aşağıdaki gibidir.
SELECT sutun-adlari
FROM tabloadi
ORDER BY sutun-adlari
OFSET n ROWS
İlk n kaydı hariç tutmak ve yalnızca sonraki m kayıtlarını getirmek için
SELECT sutun-adlari
FROM tabloadi
ORDER BY sutun-adlari
OFSET n ROWS
FETCH NEXT m ROWS ONLY
Yukarıdaki sorgunun çıktısı ise (n + 1) ila (n + 1 + m) arasında olan değerleri olacaktır.
Aşağıdaki sorgu sonucunda ilk select içerisinde products tablosundaki kayıt sayısını ekrana getiriyorum. İkinci select sorgusunda ise offset 70 diyerek productID 70 den büyük olanları bana göstermesini sağlıyorum. Eğer ki tabloda 77 değil daha fazla sayıda ürün olsa idi ikinci sorgu sonucunda 7 ürün değil daha çok bilgi dönecekti.
Şimdi ise Offset – Fetch özelliğini kullanarak sayfalama işlemini nasıl yapabiliriz ona bakalım. Aşağıdaki sorgu ihtiyacımızı görecektir.
Yukarıdaki çıktıyı incelediğinizde declare ile iki tane değişken tanımlaması yaptığımı ve @PageNumber için 0 @pagesize için 10 değerlerini verdiğimi görüyorsunuz. Result tarafında ise verdiğim değerlere göre gelen ilk sayfa verileri görüyorsunuz. Eğer ki ben PageNumber değerini 0, PageSize değerini ise 20 yapsaydım result tarafında 0 ile 20 arasındaki ürünler gelecektir.
Pagesize değeri ekranda kaç adet veriyi göstereceğiniz bilgisi, pagenumber ise kaçıncı sayfanın verisi olduğunu sizlere gösteriyor olacaktır. Yani PageNumber’I = 2, PageSize’de 20 yaparsanız ProductID değeri 40 dan büyük olan 20 ürünü görüntülemiş olursunuz.
Buradaki PageNumber ve PageSize değerlerini Stored Procedure parametreleri olarak düşünecek olursanız artık uygulamalarınızda paging yapma tarafını sql server tarafında daha da hızlıca yapabiliyor olursunuz eğer ki sql server 2012 öncesi bir sürüm kullanıyorsanız işlem kümenizi sıralayıp operatorler ile ihtiyacınıza uygun sayfalama verilerini oluşturabilirsiniz.