Когда индексы в БД неэффективны
Python
Junior
Рунити
Когда индексы в БД неэффективны
Ответы
Индексы могут быть неэффективны в следующих случаях:
- **Частые операции записи (INSERT/UPDATE/DELETE)** – индексы замедляют их, так как требуют обновления структуры данных.
- **Маленькие таблицы** – полное сканирование может быть быстрее, чем поиск по индексу.
- **Низкая селективность данных** – если у столбца мало уникальных значений (например, пол "М/Ж"), индекс не даст преимущества.
- **Использование функций в условиях WHERE** – `WHERE UPPER(name) = 'IVAN'` не использует индекс по `name`.
- **Несоответствие типа данных** – сравнение строки с числом `WHERE id = '123'` может игнорировать индекс.
Пример неэффективного индекса:
```
-- Плохо: индекс не поможет из-за функции
SELECT * FROM users WHERE DATE(created_at) = '2023-01-01';
-- Лучше: использовать диапазон
SELECT * FROM users
WHERE created_at >= '2023-01-01' AND created_at < '2023-01-02';
```