簡體   English   中英

在 Django 模型中索引外鍵

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM