Вы делаете пагинацию так: SELECT product_id FROM products LIMIT 20 OFFSET 20. В чём главный риск такого подхода для аналитической витрины или интерфейса, если нет ORDER BY?

AOFFSET без ORDER BY гарантированно возвращает пустой результат на любой современной СУБД
BПорядок строк не определён без ORDER BY, поэтому страницы могут пересекаться и пропускать записи
COFFSET считает строки с 1, поэтому из выборки выпадет ровно 21-я строка таблицы products
DБез WHERE ограничения LIMIT и OFFSET игнорируются и возвращаются все строки таблицы
Правильный ответ. LIMIT и OFFSET зависят от порядка строк, поэтому без ORDER BY страницы получаются нестабильными.

Разбор

OFFSET означает «пропусти N первых строк», но понятие «первых» появляется только при заданном порядке. Без ORDER BY СУБД не обязана возвращать строки в одном и том же порядке между запросами, поэтому страницы могут пересекаться или пропускать записи. Для стабильной пагинации нужен явный и желательно детерминированный ORDER BY по уникальному ключу или паре полей.

Проверь себя · 1/3разбор после ответа
Что вернёт запрос SELECT COUNT(DISTINCT user_id) FROM orders, если у некоторых пользователей несколько заказов?
Тренировать SQL в Telegram

Ещё вопросы по теме «Основы SQL-запросов»