Сначала выясните, действительно ли full scan лишний: при чтении большой доли таблицы он может быть оптимален. Затем изучите план, статистику, объём данных и ожидания.
Как вы решали задачи оптимизации, когда запрос работает долго и выполняет full scan? Как бы подошли к новой такой задаче?
Сначала выясните, действительно ли full scan лишний: при чтении большой доли таблицы он может быть оптимален. Затем изучите план, статистику, объём данных и ожидания.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Сначала выясните, действительно ли full scan лишний: при чтении большой доли таблицы он может быть оптимален. Затем изучите план, статистику, объём данных и ожидания.
Проверьте селективность фильтра, соответствие типов, функции над индексируемым полем, актуальность статистики и число строк после join. Сравните оценки плана с фактическим выполнением, отдельно посмотрите I/O, CPU и блокировки.
Возможные решения — подходящий индекс, более ранний отбор, сокращение столбцов, исправление соединения или предварительная агрегация. Изменение оценивайте по одинаковому сценарию до/после, учитывая кеш и стоимость записи. Не следует принудительно включать индекс только из-за самого слова scan.