Django ForeignKey 和 OneToOneField 之间的查询速度或区别是啥
Posted
技术标签:
【中文标题】Django ForeignKey 和 OneToOneField 之间的查询速度或区别是啥【英文标题】:What is query speed or difference between Django ForeignKey and OneToOneFieldDjango ForeignKey 和 OneToOneField 之间的查询速度或区别是什么 【发布时间】:2018-06-05 05:25:55 【问题描述】:我看过这个:https://groups.google.com/forum/#!topic/django-users/VEDZtuND2XM
但在那个答案上,罗纳尔多说的是方便而不是查询速度。
ForeignKey(unique=true) 和 OneToOneField 之间是否存在速度或性能差异?
或者说使用 OneToOneField 比 ForeignKey(unique=true) 有什么其他优势吗?
【问题讨论】:
反向访问实例更直观:FK:rel_model_instance.related_name.get()
,1to1:rel_model_instance.related_name
【参考方案1】:
一般的答案是否定的。但是如果你在反向关系上做一些一般的事情,会有一些性能差异:当你使用通过 OneToOneField
定义的反向关系时,你会得到一个模型实例,这与 ForeignKey
反向关系的 Manager 相反,因此总是有一个数据库命中- 这很昂贵。
【讨论】:
以上是关于Django ForeignKey 和 OneToOneField 之间的查询速度或区别是啥的主要内容,如果未能解决你的问题,请参考以下文章
Django ORM:缓存和操作 ForeignKey 对象
Django 中的 OneToOne、ManyToMany 和 ForeignKey 字段有啥区别?