Индексирование Полей Модели Django

Я знаю только, что индексирование полезно, и оно запрашивает быстрее.

в чем разница между следующими двумя?

1. class Meta:
       indexes = [
           models.Index(fields=['last_name', 'first_name',]),
           models.Index(fields=['-date_of_birth',]),
]

2. class Meta:
       indexes = [
            models.Index(fields=['first_name',]),
            models.Index(fields=['last_name',]),
            models.Index(fields=['-date_of_birth',]),
]

2 ответов


в первом примере создается индекс для


индекс модели Django был введен в Django 1.11

что такое модель.индексы:

по умолчанию, индексы создаются в порядке возрастания для каждого столбца. Чтобы определить индекс по убыванию для столбца, добавьте дефис перед именем Поля.

для вашего запроса, models.Index(fields=['last_name', 'first_name','-date_of_birth',]), создаст SQL с (last_name, first_name, date_of_birth DESC).

давайте перейдем к вашему вопросу,

вы спросили разницу между 2 запросы,

, оба models.Index(fields=['-date_of_birth',]),

потому что хотя бы один переопределит назначенные переменные. от вашего вопроса меньше всего dateofbirth таким образом, он будет переопределять выше двух строк.

Итак, согласно документации предпочтительным методом является, потому что поле индексирования должно быть в одном списке.. таким образом, django подготовит индексацию SQL из списка полей...

models.Index(fields=['last_name', 'first_name', '-date_of_birth']),