Вы делаете пагинацию по заказам: SELECT order_id, created_at FROM orders ORDER BY created_at DESC LIMIT 50 OFFSET 50. Иногда один и тот же order_id встречается на двух страницах. Какое улучшение проще всего сделать в рамках этих же операторов, чтобы порядок был более детерминированным?

AПоднять LIMIT до 100, чтобы реже перелистывать страницы и снизить шанс пересечения строк
BУбрать OFFSET и оставить только LIMIT 50 без второго столбца в ORDER BY
CДобавить фильтр WHERE created_at IS NOT NULL для защиты от пропусков и повторов
DДописать второй ключ в сортировку: ORDER BY created_at DESC, order_id DESC
Правильный ответ. Добавляйте уникальный tie-breaker в ORDER BY, если первый столбец сортировки не уникален.

Разбор

Если created_at повторяется у многих заказов, то порядок строк с одинаковым временем может «плавать». Это особенно заметно при LIMIT/OFFSET, когда граница страницы проходит внутри группы одинаковых значений. Добавив уникальный столбец в сортировку, например order_id, вы фиксируете порядок: ORDER BY created_at DESC, order_id DESC. Это не решает всех проблем OFFSET при изменяющихся данных, но делает порядок воспроизводимым для одного и того же набора строк.

Проверь себя · 1/3разбор после ответа
Нужно получить 5 самых дешёвых товаров категории 'electronics' из таблицы products. Какой запрос верный?
Тренировать SQL в Telegram

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