500 kayıt için verimlilik muhtemelen bir sorun değildir, ancak milyonlarca kayıt varsa, bir sonraki sayfayı seçmek için bir WHERE yan tümcesi kullanmak avantajlı olabilir:
SELECT *
FROM yourtable
WHERE id > 234374
ORDER BY id
LIMIT 20
Buradaki "234374", görüntülediğiniz önceki sayfadaki son kaydın kimliği.
Bu, ilk kaydı bulmak için kimlikteki bir dizinin kullanılmasını sağlar. Eğer kullanırsanız LIMIT offset, 20
sonuna doğru sayfa gittikçe yavaşlar ve yavaşlar. Söylediğim gibi, muhtemelen sadece 200 kaydınız olması önemli değil, ancak daha büyük sonuç kümeleriyle fark yaratabilir.
Bu yaklaşımın bir diğer avantajı, çağrılar arasında veri değişmesi durumunda kayıtları kaçırmayacak veya tekrarlanan bir kayıt almayacaksınızdır. Bunun nedeni, bir satırın eklenmesi veya kaldırılmasının, tüm satırların kaydırıldıktan sonra kayması anlamına gelmesidir. Sizin durumunuzda muhtemelen önemli değil - sanırım reklam havuzunuz çok sık değişmiyor ve yine de hiç kimse aynı reklamı üst üste iki kez aldıklarını fark etmeyecekti - ama "en iyi yolu" arıyorsanız hangi yaklaşımın kullanılacağını seçerken akılda tutulması gereken başka bir şey budur.
LIMIT'i bir ofsetle kullanmak istiyorsanız (ve bir kullanıcı sayfalar tek tek sayfalamak yerine doğrudan sayfa 10000'e giderse bu gereklidir) , LIMIT'in performansını büyük bir oranla artırmak için geç satır aramaları hakkında bu makaleyi okuyabilirsiniz. ofset.