Вы делаете пагинацию по заказам: 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
CДобавить WHERE created_at IS NOT NULL, чтобы исключить пропуски
DORDER 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разбор после ответа
Что сделает запрос INSERT INTO archive (order_id, amount, status) SELECT order_id, amount, status FROM orders WHERE status = 'completed'?
Тренировать SQL в Telegram

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