[英]Index a foreign key in Django Models
我想在一個涉及 CharField 和 ForeignKey 的項目中索引一個非常常見的查詢。 我對這個查詢有一個瓶頸,我正在嘗試優化它。 我有這個:
class Bill(models.Model):
company = models.ForeignKey(Company, on_delete=models.CASCADE)
category = models.CharField(max_length=200, null=True, blank=True)
...
我添加了這個以嘗試提高性能:
class Meta:
indexes = [
models.Index(fields=['category', 'company']),
]
但是結果是一樣的,查詢是:
models.Bill.objects.filter(company=company, category='recibida')
還有什么我可以改進的嗎? 這個索引做得好嗎?
您創建的索引是有效的,但您可能不需要。 它會創建兩個字段的組合索引,並且僅在您有一個同時使用這兩個字段的查詢時才會使用。
如果您的查詢一次只訪問一個字段,更好的方法是在每個字段后添加db_index=True
。
但是,請記住,為查詢找到最佳索引很大程度上取決於您的上下文,最好的方法是使用 SQL EXPLAIN,例如使用 django-debug-toolbar 來查找它。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.