Вопрос проверяет умение читать планы выполнения запросов и выявлять проблемы производительности.
Неоптимальный доступ виден по операциям полного сканирования таблицы и большому числу обработанных строк. Если читается намного больше данных, чем возвращается, это тревожный сигнал. Такие признаки обычно указывают на отсутствие подходящих индексов или неудачный план выполнения.
План запроса показывает, как именно база данных получает данные.
План запроса — это последовательность операций, которые СУБД выполняет для получения результата запроса.
Seq Scan
полное сканирование таблицы,
часто признак отсутствия индекса.
Большое расхождение Rows
обработано гораздо больше строк, чем возвращено.
Высокая стоимость узлов
большие значения cost и actual time.
Множественные фильтрации
условия применяются поздно, а не при чтении.
EXPLAIN ANALYZE
SELECT * FROM orders WHERE status = 'done';
Если в плане используется Seq Scan, доступ может быть неоптимальным.
сравнивать estimated rows и actual rows,
искать самые «дорогие» узлы,
анализировать порядок операций.
Неоптимальный доступ к данным легко выявляется по плану запроса через полные сканирования и избыточную обработку строк.