Этот вопрос проверяет умение анализировать план выполнения запроса (EXPLAIN) в СУБД для определения использования индексов, что критически важно для оптимизации производительности запросов.
План выполнения запроса (query execution plan) — это пошаговый алгоритм, который база данных использует для получения данных. Команда EXPLAIN (или EXPLAIN ANALYZE) позволяет увидеть этот план, не выполняя сам запрос. Анализ плана — основной способ понять, как СУБД обрабатывает запрос, и выявить узкие места, особенно связанные с использованием индексов.
В большинстве СУБД синтаксис схож. Например, в PostgreSQL и MySQL:
EXPLAIN SELECT * FROM users WHERE email = 'test@example.com';В SQL Server используется SET SHOWPLAN_TEXT ON; или графический план в SSMS.
type со значениями ref, range, index указывает на использование индекса. ALL — полный сканирование таблицы.key, в PostgreSQL — Index Name в узле плана.Рассмотрим таблицу orders с индексом по customer_id.
-- Запрос 1: Использует индекс
EXPLAIN SELECT * FROM orders WHERE customer_id = 123;
-- В плане, скорее всего, будет "Index Scan using idx_customer_id on orders"
-- Запрос 2: Не использует индекс (если нет индекса по status)
EXPLAIN SELECT * FROM orders WHERE status = 'shipped';
-- В плане может быть "Seq Scan on orders" (Table Scan)Вывод/Итог: Анализ плана запроса через EXPLAIN — обязательный навык для оптимизации производительности баз данных. Использование индексов определяется по операциям Index Scan/Seek в плане. Если их нет, нужно рассмотреть создание подходящего индекса или переписать запрос.