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

Как создаются индексы в Django ORM

В Django ORM индексы создаются через модель Meta класса или с помощью db_index в полях.

1. Через db_index в поле:

python
class User(models.Model):
    username = models.CharField(max_length=100, db_index=True)

Автоматически создаст индекс для username.

2. Через Meta.indexes:

python
class User(models.Model):
    first_name = models.CharField(max_length=100)
    last_name = models.CharField(max_length=100)
text
class Meta:
    indexes = [
        models.Index(fields=['first_name']),
        models.Index(fields=['last_name', 'first_name'], name='full_name_idx'),
    ]
text
Можно создавать составные индексы и задавать им имена.  

**3. Функциональные индексы (Django 3.2+):**  
```python
from django.db.models.functions import Lower

class Meta:
    indexes = [
        models.Index(Lower('username'), name='username_lower_idx'),
    ]

Для сложных условий (например, регистронезависимый поиск).

Примечание:

  • Индексы улучшают поиск, но замедляют вставку/обновление.
  • Для PostgreSQL можно использовать models.Index(fields=[...], opclasses=[...]) для специфичных типов индексов.
Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

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

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

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