SQL Server’da OFFSET-FETCH Kullanımı

SQL Server’da OFFSET ve FETCH sonuç kümesinden belirli bir bölümü almak için kullanılır ve genellikle sayfalama (pagination) işlemleri için tercih edilir. Bu özellik SQL Server 2012’den itibaren mevcuttur.

OFFSET: Atlanacak satır sayısını belirtir. Sıfır veya pozitif bir tam sayı olmalıdır. ORDER BY ile birlikte kullanılması zorunludur

SELECT *  FROM Person.Person
Order By BusinessEntityID ASC

SELECT *  FROM Person.Person
Order By BusinessEntityID ASC
OFFSET 5 ROWS

FETCH: Döndürülecek satır sayısını belirtir. NEXT veya FIRST anahtar kelimeleri kullanılabilir. ONLY veya WITH TIES (eşit değerleri dahil etmek için) seçenekleri vardır

SELECT *  FROM Person.Person
Order By BusinessEntityID ASC

-- İlk 10 ürünü getir
SELECT * FROM Person.Person
ORDER BY BusinessEntityID
OFFSET 2 ROWS
FETCH NEXT 10 ROWS ONLY;

Aşağıdaki komut aynı sıralama değerlerine sahip tüm sonuçları getirmektedir. Belirtilen with ties belirtilen satır sayısından fazla olursa hata mesajı üretmektedir.

SELECT BusinessEntityID
FROM Person.Person
ORDER BY BusinessEntityID DESC
OFFSET 10 ROWS
FETCH NEXT 50 ROWS WITH TIES;

OFFSET-FETCH mutlaka ORDER BY ile kullanılmalıdır. Büyük veri setlerinde OFFSET değeri arttıkça performans düşebilir. Sık kullanılan sayfalama sorguları için uygun indeksler oluşturulmalıdır

OFFSET-FETCH, eski yöntemler olan ROW_NUMBER() veya TOP ile yapılan sayfalamaya göre daha okunabilir ve standart bir yaklaşımdır.

“Şüphesiz peygamberlerimize ve iman edenlere, hem dünya hayatında, hem şahitlerin şahitlik edecekleri günde yardım ederiz.” Mü’min Suresi-51

Author: Yunus YÜCEL

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir