Индекс по status добавили — быстрее не стало, ночная загрузка замедлилась
В таблице orders 12 млн строк, 92% из них в статусе completed. Чтобы ускорить запрос
SELECT id, total FROM orders WHERE status = 'completed' ORDER BY created_at DESC LIMIT 50;
добавили индекс по колонке status. Время ответа не изменилось, EXPLAIN по-прежнему показывает полный проход, а ночная пакетная загрузка 2 млн строк стала заметно дольше.
Выберите два верных объяснения.
правильных вариантов может быть несколько
- Индекс малоселективный: пройти по нему и сходить в таблицу за 92% строк дороже последовательного чтения, поэтому планировщик его не берёт
- Каждая вставка теперь дополнительно обновляет индекс, поэтому массовая загрузка стала медленнее
- Индекс по строковой колонке не используется планировщиком, пока колонка не переведена в тип ENUM или не укорочена префиксом
- Индекс не подхватился только потому, что после создания не была пересобрана статистика; после её пересбора план изменится
- Загрузка замедлилась из-за блокировки таблицы, которая держится с момента создания индекса и снимется после перезапуска СУБД
