Встречается на собеседованиях • сегодня

На какие типы полей не надо писать индекс

Индексы не стоит создавать для полей с низкой селективностью (мало уникальных значений), так как они неэффективны:

  • Логические флаги (True/False)
  • Перечисляемые типы с малым числом вариантов (например, статусы "new", "in_progress", "done")
  • Поля с NULL значениями (если NULL преобладает)

Также не индексируют:

  • Часто изменяемые поля - индексы замедляют INSERT/UPDATE
  • Очень большие значения (TEXT/BLOB) - индексы занимают много места
  • Поля, по которым не выполняется поиск/сортировка

Пример плохого индекса:

python
# Неэффективный индекс для поля с 3 вариантами
class Order(models.Model):
    status = models.CharField(max_length=20, choices=STATUS_CHOICES)
    class Meta:
        indexes = [
            models.Index(fields=['status']),  # Плохо - мало уникальных значений
        ]
Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

Следующий вопрос

Это единственный вопрос по вашему фильтру

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы