我有以下模型定义:
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")
此查询是否会自动使用模型上的索引集,从而使大型数据集的查询速度更快?还是我需要额外的东西?