Как создать индексы, используя CharField в Django? - PullRequest
0 голосов
/ 22 февраля 2019

У меня есть следующее определение модели:

class Shop(models.Model):
    label = models.CharField(max_length=50, unique=True, primary_key=True)

class Product(models.Model):
    shop = models.ForeignKey(Shop, on_delete=models.CASCADE, db_index=True)
    name = models.CharField(max_length=255)
    price = models.DecimalField(max_digits=12, decimal_places=2)

Поскольку Shop имеет CharField в качестве первичного ключа, я хочу проиндексировать свою таблицу Product на основе этой CharField, на которую ссылаютсяиспользуя внешний ключ.С помощью описанной выше настройки, как мне написать запросы, которые будут гарантировать, что индекс используется, чтобы продукты могли быть получены быстрее?

Допустим, я пишу запрос следующим образом:

 Product.objects.filter(shop="Amazon", price__gte="10.00")

Будет ли этот запрос автоматически использовать набор индексации в моих моделях и, следовательно, будет ли он выполняться быстрее для больших наборов данных?Или мне нужно что-то лишнее?

...