首页 > 解决方案 > Django SQL 查询计数

问题描述

我在 Django 中有以下模型:

class Author(models.Model):
    name = models.CharField(max_length=120)
    country = models.CharField(max_length=100)

class Book(models.Model):
    title = models.CharField(max_length=1024)
    publisher = models.CharField(max_length=255)
    published_date = models.DateField()
    author = models.ForeignKey(Author)

Author 表中有 9 条记录,Book 表中有 4 条记录。

评估 Book.objects.select_related().all() 时会发出多少 SQL 查询?

我的猜测是 4,因为 Book 表中有 4 行,所以每个查询 1 以搜索与每本书相关的所有作者。为什么我的回答是错误的?

可能的选择是 5、4、10 和 1。

标签: sqldjangodjango-models

解决方案


选择相关(*字段)

返回QuerySet将“遵循”外键关系的 a,在执行查询时选择其他相关对象数据。这是一个性能提升器,它会导致单个更复杂的查询,但意味着以后使用外键关系将不需要数据库查询。


推荐阅读