Выбор ответа Junior SELECT и фильтрация обновлено
Порядок строк без ORDER BY
Вопрос
Запрос SELECT * FROM orders LIMIT 10 в разработке всегда возвращал заказы по возрастанию id. Что можно сказать о порядке строк?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: Порядок не гарантирован и может смениться после UPDATE или смены плана. Без ORDER BY SQL не обещает никакого порядка.
Варианты ответа
- Порядок не гарантирован и может смениться после UPDATE или смены планаправильный ответ
- Порядок гарантирован, потому что
idпервичный ключ с индексом - Порядок гарантирован, потому что строки хранятся в порядке вставки
- Порядок гарантирован при
LIMIT: база берёт первые вставленные строки
Разбор
Без ORDER BY SQL не обещает никакого порядка. PostgreSQL отдаёт строки так, как их удобно прочитать по выбранному плану: из кучи, по индексу, параллельными воркерами. Первичный ключ не задаёт физический порядок таблицы, а UPDATE создаёт новую версию строки в другом месте. LIMIT порядок тоже не задаёт, он лишь отрезает первые строки того, что пришло.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.