繁体   English   中英

Django ORM object.related.id vs ZA8CFDE6331BD59EB2AC96F8911C_related'relatedid'在选择后使用。

[英]Django ORM object.related.id vs object.related_id after used select_related('related')

假设我们有这个模型:

class Product(models.Model):
    ....
    price = models.DecimalField(max_digits=12, decimal_places=2)

class Order(models.Model):
    ....
    product= models.ForeignKey(Product)

在使用 select_related 进行像Order.objects.filter(...).select_related('product')这样的查询之后, order.product.idorder.product_id之间是否有任何性能差异?

会有区别,但与数据库无关。 访问 Python 中的任何 object 字段时,总会有性能成本,因此对于指定的示例:

order.product.id

需要从 2 个不同的 object 中获取 2 个不同的属性,首先它需要从order中获取product属性,然后需要从product中获取id

order.product_id

只需要从order中获取 1 个属性: product_id

这纯粹是关于从 memory 中获取正确的数据,这在 Python 中不是免费的,它不涉及任何 IO 到数据库或其他资源。 在很多情况下,这个成本非常小,可以省略,因为在您的代码中可能会有更多类似的操作。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM