На большой таблице events запрос SELECT * FROM events ORDER BY created_at DESC LIMIT 100 неожиданно работает быстро. Какое объяснение наиболее вероятно при наличии индекса по created_at?

AПлан может пройти Index Scan по индексу на created_at и взять первые строки без отдельного шага Sort
BНаличие LIMIT 100 отключает сортировку в плане, поэтому ORDER BY фактически не влияет на стоимость запроса
CОператор ORDER BY в таких запросах игнорируется оптимизатором, если в таблице нет полей с уникальным значением
DПланировщик всегда использует хэш-агрегацию, когда в запросе одновременно встречаются ORDER BY и LIMIT
Правильный ответ. Связка ORDER BY и LIMIT часто ускоряется индексом по полю сортировки.

Разбор

Если есть подходящий индекс по created_at, планировщик может читать строки уже в нужном порядке и остановиться после LIMIT 100. Тогда дорогая операция Sort не нужна или становится значительно дешевле. Поэтому одинаковый запрос без индекса может быть на порядки медленнее.

Проверь себя · 1/3разбор после ответа
В выводе EXPLAIN вы видите оценку cost=0.00..431.00. Какой вывод аналитик может сделать безопасно?
Тренировать SQL в Telegram

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