0Pricing
Coding Interview Prep · Ders

LIMIT, OFFSET ve FETCH FIRST

MySQL, Postgres ve SQL Server arasındaki sayfalama söz dizimini öğrenin.

LIMIT, OFFSET ve FETCH FIRST, CoddyKit'te ücretsiz bir Coding Interview Prep dersidir. Bu, 4 dersinin 2. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, Coding Interview Prep öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. Coding Interview Prep kursu toplamda 4 dersten oluşur.

Sayfalama Lehçeler Arası Bir Sorudur

"İlk 10 satırı nasıl alırsınız?" sorusu, mülakat yapan kişi "ve bunu standart SQL'de yapın" veya "şimdi SQL Server'da yapın" diye ekleyene kadar basit görünür. Satır sayısını sınırlama sözdizimi, veritabanları arasında en çok farklılaşan özelliklerden biridir.

Bu ders üç ana biçimi ele alır: LIMIT (MySQL/Postgres/SQLite), OFFSET ... FETCH (ANSI standardı, SQL Server) ve daha eski olan TOP (SQL Server).

MySQL ve PostgreSQL'de LIMIT

En yaygın biçim, sonuç kümesini en fazla n satırla sınırlayan LIMIT n ifadesidir. MySQL, PostgreSQL ve SQLite tarafından desteklenir.

Önemli nokta şudur: mantıksal yürütme sırasına göre LIMIT, ORDER BY'dan sonra uygulanır; bu nedenle neredeyse her zaman ikisini birlikte kullanırsınız. Sıralama yapmadan sınırlama, belirsiz bir satır kümesi döndürür.

SELECT name, salary
FROM employees
ORDER BY salary DESC
LIMIT 10;

Satırları Atlamak için OFFSET

Sayfalama, önceki sayfaları atlamak için bir başlangıç konumuna ihtiyaç duyar. OFFSET m, sınır uygulanmadan önce ilk m satırı atlar.

Sayfa boyutu 10 olan 3. sayfayı almak için 20 satırı atlar ve 10 satır alırsınız. Genel formül OFFSET = (page - 1) * page_size şeklindedir.

SELECT name, salary
FROM employees
ORDER BY salary DESC
LIMIT 10 OFFSET 20;

MySQL'in Virgüllü Sözdizimi

MySQL ayrıca iki bağımsız değişkenli virgüllü biçimi de kabul eder: LIMIT offset, count. Sıralamanın anahtar sözcüklü biçimdekinden ters olduğuna dikkat edin; bu nokta insanların kafasını karıştırır.

LIMIT 20, 10, 20 satırı atlayıp ardından 10 satır almak anlamına gelir ve LIMIT 10 OFFSET 20 ile aynıdır. Mülakatlarda açıklık için anahtar sözcüklü biçimi tercih edin.

SELECT name, salary
FROM employees
ORDER BY salary DESC
LIMIT 20, 10;

ANSI Standardı: FETCH FIRST

SQL standardı OFFSET ... ROWS FETCH FIRST ... ROWS ONLY biçimini kullanır. PostgreSQL, Oracle 12c+, DB2 ve SQL Server 2012+ bunu destekler.

Yazımı uzun olsa da taşınabilir seçimdir. ROW ve ROWS birbirinin yerine kullanılabilir; FIRST ve NEXT eş anlamlıdır.

SELECT name, salary
FROM employees
ORDER BY salary DESC
OFFSET 20 ROWS
FETCH FIRST 10 ROWS ONLY;

SQL Server TOP

Daha eski SQL Server kodları, TOP n ifadesini SELECT ifadesinin hemen ardından kullanır. Yerleşik bir ofset desteği olmadığından, kendi başına ilk sayfanın ötesinde sayfalama yapamaz.

Mülakat yapan kişi sizden TOP ifadesini standart biçime dönüştürmenizi isteyebilir. ORDER BY ile kullanılan SELECT TOP 10, FETCH FIRST 10 ROWS ONLY ifadesine denktir.

SELECT TOP 10 name, salary
FROM employees
ORDER BY salary DESC;

TOP WITH TIES

SQL Server'ın kullanışlı bir özelliği: TOP n WITH TIES, ORDER BY anahtarında son satırla eşit değere sahip ek satırları döndürür.

Üç kişi 10. en yüksek maaşı paylaşıyorsa, TOP 10 WITH TIES bu kişilerin tümünü, yani muhtemelen 12 satırı döndürür. Bunun standarttaki karşılığı FETCH FIRST ... WITH TIES ifadesidir.

SELECT TOP 10 WITH TIES name, salary
FROM employees
ORDER BY salary DESC;

Deterministik Sayfalama İçin ORDER BY Zorunludur

Buradaki en önemli mülakat noktası şudur: Deterministik bir ORDER BY olmadan OFFSET/LIMIT kullanmak güvenli değildir. Temel sıralama tanımsız olduğundan, veritabanı altyapısı "sayfa 1" için seçtiğinden farklı satırları "sayfa 2" için seçebilir.

Her zaman benzersiz veya yeterince benzersiz bir anahtar kümesine göre sıralama yapın. Sıralama sütununuzda tekrarlar varsa, sayfaların üst üste binmemesi veya satır atlamaması için birincil anahtarı eşitlik bozucu olarak ekleyin.

SELECT id, name, salary
FROM employees
ORDER BY salary DESC, id ASC
LIMIT 10 OFFSET 20;

OFFSET Sayfalaması Neden Kötü Ölçeklenir

Büyük bir OFFSET değeri, veritabanını atlanan satırların tümünü üretmeye ve ardından atmaya zorlar. OFFSET 100000 LIMIT 10, 10 satır döndürmek için 100.010 satır okur.

Maliyet sayfa numarasıyla doğrusal olarak artar; bu da büyük tablolarda derin sayfalamayı yavaşlatır.

Anahtar Kümesiyle (Arama) Sayfalama

Ölçeklenebilir alternatif anahtar kümesiyle sayfalama yöntemidir: sayıya göre atlamak yerine, gördüğünüz son değerin ötesini filtrelersiniz. Bu yöntem bir dizin aralığı taraması kullanır ve ne kadar ileride olursanız olun hızlı kalır.

Önceki sayfanın son satırındaki sıralama anahtarını hatırlayıp bunun ötesindeki satırları istersiniz. Anahtar kümesiyle sayalamadan söz etmek, kıdemli düzeyde güçlü bir yetkinlik göstergesidir.

SELECT id, name, created_at
FROM events
WHERE created_at < '2026-01-01 10:00:00'
ORDER BY created_at DESC
LIMIT 10;

SQL Lehçesine Göre Kısa Başvuru

Mülakatta hızlıca hatırlamak için bu tabloyu ezberleyin:

  • MySQL / Postgres / SQLite: LIMIT n OFFSET m
  • Standart / SQL Server 2012+ / Oracle 12c+: OFFSET m ROWS FETCH FIRST n ROWS ONLY
  • Eski SQL Server: SELECT TOP n (ofset yok)
  • Eski Oracle (12c öncesi): bir alt sorguda ROWNUM'a göre filtreleyin

Hızlı Kontrol

Sayfa boyutu 10 olan 3. sayfa için doğru sorguyu seçin.

Özet

Sayfalamanın temel noktaları:

  • MySQL, Postgres ve SQLite için LIMIT/OFFSET; standart ve modern SQL Server için OFFSET ... FETCH FIRST; eski SQL Server için TOP kullanılır.
  • OFFSET = (page - 1) * page_size.
  • Her zaman belirleyici bir ORDER BY ile birlikte kullanın ve benzersiz bir eşitlik bozucu ekleyin.
  • Büyük ofsetler yavaştır; derin sayfalama için anahtar kümesiyle sayalamayı tercih edin.

Sıkça Sorulan Sorular

“LIMIT, OFFSET ve FETCH FIRST” dersi ücretsiz mi?

Evet — “LIMIT, OFFSET ve FETCH FIRST” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve Coding Interview Prep kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. Coding Interview Prep kursu toplamda 4 dersten oluşur.

“LIMIT, OFFSET ve FETCH FIRST” dersinde ne öğreneceğim?

MySQL, Postgres ve SQL Server arasındaki sayfalama söz dizimini öğrenin. Coding Interview Prep ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.

Coding Interview Prep öğrenmeye başlamak için deneyim gerekli mi?

Önceden deneyim gerekmez. CoddyKit'te Coding Interview Prep, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 2. dersidir.

“LIMIT, OFFSET ve FETCH FIRST” dersi ne kadar sürer?

Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.

Bu Coding Interview Prep dersinde kod yazıp çalıştırabilir miyim?

Evet. Her Coding Interview Prep dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.

Bu kursun tüm dersleri

  1. Birden Çok Sütuna Göre Sıralama ve NULL Yerleşimi
  2. LIMIT, OFFSET ve FETCH FIRST
  3. İlk N Satırı Güvenilir Şekilde Döndürme
  4. İfadelere ve Takma Adlara Göre Sıralama
← Coding Interview Prep Sayfasına Dön