Этот вопрос проверяет умение анализировать выполнение SQL-запросов и понимание того, как СУБД использует индексы для оптимизации.
Проверка использования индексов — ключевой навык для оптимизации производительности баз данных. Индексы ускоряют поиск данных, но если запрос составлен неправильно или статистика устарела, оптимизатор СУБД может их проигнорировать, что приведёт к медленному выполнению.
Практически все современные СУБД предоставляют команду для анализа плана запроса без его фактического выполнения. Вот основные варианты:
EXPLAIN или EXPLAIN ANALYZE (последний выполняет запрос и показывает фактические метрики).SET SHOWPLAN_ALL ON;.EXPLAIN PLAN FOR.В выводе плана ищите следующие ключевые операции:
Также обращайте внимание на столбцы:
-- Создадим тестовую таблицу и индекс
CREATE TABLE users (id SERIAL PRIMARY KEY, name TEXT, email TEXT);
CREATE INDEX idx_users_name ON users(name);
-- Запрос, который ДОЛЖЕН использовать индекс
EXPLAIN ANALYZE
SELECT * FROM users WHERE name = 'Alice';
-- Пример вывода (упрощённо):
-- -> Index Scan using idx_users_name on users (cost=0.15..8.17 rows=1 width=68)
-- Index Cond: (name = 'Alice'::text)
В выводе чётко видна операция "Index Scan using idx_users_name", что подтверждает использование индекса.
WHERE status = 'active', когда 90% строк имеют этот статус).WHERE UPPER(name) = 'ALICE').ANALYZE).Вывод: Анализ плана выполнения через EXPLAIN — основной метод проверки использования индексов. Применяйте его для диагностики медленных запросов, чтобы убедиться, что СУБД задействует созданные индексы для фильтрации и сортировки данных, а не выполняет дорогостоящие полные сканирования таблиц.