На какие типы полей не надо писать индекс
Python
Middle
Без компании
На какие типы полей не надо писать индекс
Ответы
Индексы не стоит создавать для полей с низкой селективностью (мало уникальных значений), так как они неэффективны:
- Логические флаги (True/False)
- Перечисляемые типы с малым числом вариантов (например, статусы "new", "in_progress", "done")
- Поля с NULL значениями (если NULL преобладает)
Также не индексируют:
- Часто изменяемые поля - индексы замедляют INSERT/UPDATE
- Очень большие значения (TEXT/BLOB) - индексы занимают много места
- Поля, по которым не выполняется поиск/сортировка
Пример плохого индекса:
```
# Неэффективный индекс для поля с 3 вариантами
class Order(models.Model):
status = models.CharField(max_length=20, choices=STATUS_CHOICES)
class Meta:
indexes = [
models.Index(fields=['status']), # Плохо - мало уникальных значений
]
```