Ответ
Индексы ухудшают производительность при операциях модификации данных и в случае неоптимального проектирования.
Основные негативные сценарии:
-
Замедление операций записи (INSERT, UPDATE, DELETE).
- При каждой модификации строки БД должна обновлять все связанные с ней индексы. Чем больше индексов на таблице, тем дороже операция записи.
-
Неправильный выбор индекса оптимизатором.
- При избытке индексов оптимизатор запросов может выбрать не самый эффективный план выполнения, что увеличит время запроса.
-
Создание бесполезных индексов.
- Индекс с низкой селективностью (например, на столбец
genderсо значениями 'M'/'F') почти не фильтрует данные и не ускоряет выборку, но потребляет ресурсы на обновление.-- Бесполезный индекс (низкая селективность) CREATE INDEX idx_gender ON users(gender); - Дублирующие индексы. Индекс
(A, B)уже покрывает запросы к столбцуA. Отдельный индекс наAчасто избыточен.
- Индекс с низкой селективностью (например, на столбец
Рекомендация: Балансируйте количество индексов, исходя из соотношения операций чтения и записи в вашей нагрузке. Анализируйте реальные медленные запросы перед созданием индекса.