В отчёте для проверки качества данных вы используете SELECT user_id FROM users LIMIT 100 и замечаете, что набор пользователей меняется между запусками. Почему это ожидаемо?

AПотому что LIMIT делает равномерную случайную выборку.
BПотому что без ORDER BY база всегда возвращает пользователей с минимальным user_id.
CПотому что SELECT без WHERE обязан возвращать строки в порядке вставки.
DПотому что без ORDER BY порядок строк не гарантирован, и результат с LIMIT может меняться при изменении плана, индексов или данных.
Правильный ответ. LIMIT без ORDER BY не даёт стабильного набора строк.

Разбор

SQL по умолчанию не гарантирует порядок строк, если вы явно не указали ORDER BY. Поэтому LIMIT просто обрезает «как получилось» — порядок может зависеть от плана (Seq Scan или Index Scan), физического расположения строк и других факторов. Если нужен воспроизводимый сэмпл, добавьте детерминирующий ORDER BY (часто по ключу).

Проверь себя · 1/3разбор после ответа
В выводе EXPLAIN вы видите узел Seq Scan on orders. Что это обычно означает?
Тренировать SQL в Telegram

Ещё вопросы по теме «EXPLAIN и оптимизация»