İleri Seviye SQL: CTE ve ROW_NUMBER ile Sayfalama İşlemleri

Karcan Ozbal
2 min readMar 20, 2022

--

İleri Seviye SQL: CTE ve ROW_NUMBER ile Sayfalama İşlemleri

# SQL’de CTE ve ROW_NUMBER ile Sayfalama İşlemleri

CTE ile sayfalama işlemlerini tam olarak kavrayabilmek için ilk önce İleri Seviye SQL: CTE ile Sayfalama İşlemleri makalesine göz atabilirsiniz.

Peki, nedir bu CTE? : İleri Seviye SQL : CTE (Common Table Expressions)

# Yeni Bir Veritabanı ve Tablo Yapısının Oluşturulması

Kodları uyguladıktan sonra:

  • CTE_Paging isminde veritabanı,
  • dbo.Customers tablo oluşacak.

# Örnek Verileri Oluşturalım

Kodları uyguladıktan sonra:

  • dbo.Customers tablosuna 100 adet kayıt oluşacak.

# Verileri CTE ve ROW_NUMBER ile Sayfalar Halinde Listelemek

Senaryoya göre, müşteri tablosundaki kayıtların her bir sayfada 25 kayıt olacak şekilde liste bekleniyor. Peki, bu işlem CTE ve ROW_NUMBER ile nasıl gerçekleşir?

Sorgu yapısından bahsetmem gerekirse:

  • @vPageRowCount değişkenini sayfa başına gösterilecek kayıt sayısı, @vPageNumber değişkenini de istenilen sayfa numarası için kullanılacak.
  • ROW_NUMBER fonksiyonu yardımı ile her satır için sıradan satır numarası veriliyor.
  • CTE_Data sorgu bloğu ise verilerin getirileceği tablo ve tabloya ait sorguların bulunduğun kısım. (parametrik olarak filtre gerekir ise, bu kısımda WHERE koşulları ile yapmamız gerekir)
  • CTE_Count ise, CTE_Data sorgu sonucunda sayfalama yapmadan önceki toplam satır sayısına ulaşacağımız kısımdır, CTEyi asıl kullanma amacımız aslında burasıdır.
  • Son aşamada ise, CTE_Data ve CTE_Count’dan bize gelen verileri sunma ve hemen arından ORDER BY ve WHERE ifadeleri ile sayfalama işlemi gerçekleştiriliyor.

Sonuç ise aşağıdaki gibi olmalıdır.

# Kazanımlar

  • CTE’nin tek bir DML ifadesi süresince var olduğunu ve genellikle recursive işlemlerde kullanıldığını,
  • View, temp table ve table-value constructora benzediğini ve alanların deklare edilmemesi gerektiğini,
  • Birden fazla CTE ifadesi kullanılabildiğini,
  • Recursive işlemlerde satır limitinin olduğunu,
  • CTE’nin Sayfalama işlemlerinde, toplam kayıt sayısına performanslı bir şekilde ulaşılmasını ve ROW_NUMBER fonksiyonu ile de sayfalama işlemlerini gerçekleştirmesine yardımcı olduğunu öğrenmiş olduk.

# Sosyal Medya Hesaplarım

Konu istekleri ve makale ile ilgili tartışmak için yoruma bekliyorum.

--

--

Karcan Ozbal
Karcan Ozbal

Written by Karcan Ozbal

Cruiser Biker, SQL and Software Developer

No responses yet