Büyük tablolarda OFFSET yerine imleçli sayfalama kullanan var mı?

0 Yanıt 0 Görüntülenme
Puanlayanlar
Katılımcılar
Konuyu Açan #1
Yönetim panelinde kayıt sayısı büyüdükçe klasik sayfalama can sıkmaya başlıyor. LIMIT 30 OFFSET 300000 sorgusu, gösterilmeyecek satırları da geçmek zorunda kalabildiği için son sayfalarda belirgin biçimde yavaşlayabiliyor. Ben son kayıtların altına “Daha fazla yükle” mantığı eklerken imleçli sayfalamayı tercih ediyorum.

Son görünen satırın tarih ve kimlik değerlerini sonraki sorguya taşıyınca veritabanı doğrudan o noktadan devam edebiliyor:

KOD
1234567
SELECT id, created_at, title
FROM posts
WHERE (created_at < :last_created_at)
   OR (created_at = :last_created_at AND id < :last_id)
ORDER BY created_at DESC, id DESC
LIMIT 30;


Burada id eşit tarihli kayıtlar için sıralamayı kararlı hale getiriyor. created_at ve id alanlarını birlikte içeren bir indeks de bu sorgu düzenine yardımcı olabilir; gerçek etkisini tablonun verisi ve EXPLAIN çıktısıyla kontrol etmekte fayda var.

Dezavantajı, kullanıcıya doğrudan “137. sayfa” bağlantısı vermenin zorlaşması. Ayrıca sayfalar arasında yeni kayıtlar eklenirse sonuç kümesi OFFSET’li yaklaşımdan farklı davranabilir. Sonsuz kaydırma veya ileri yönlü listeleme içinse çoğu zaman iyi bir takas gibi geliyor.

Siz hangi senaryoda OFFSET’te kalıyorsunuz, imleçli sayfalama kullandıysanız indeks ve sıralama tarafında nelere dikkat ettiniz?

Yanıt vermek için giriş yapmış olmalısınız.

0 alıntı seçildi