Проблемы LIMIT/OFFSET при пагинации. Что делать в Go?

Ответ

OFFSET заставляет БД "пройти" первые N строк, поэтому при больших OFFSET запрос замедляется. Для пагинации предпочтительна курсорная: WHERE id > :last_id ORDER BY id LIMIT 20. В Go хранят last_id с предыдущей страницы и передают в запрос. Стабильная производительность и нет "прыжков" при появлении новых строк.

rows, err := db.QueryContext(ctx,
    "SELECT * FROM orders WHERE id > $1 ORDER BY id LIMIT $2", lastID, pageSize)
🧠Квиз 🏆Лидеры 🎯Собесед. 📖Вопросы 📚База зн.