Django 通用外键 - 考虑到 SQL 性能是好是坏?

标签 django performance postgresql foreign-key-relationship

我有一个模型 A,它包含一个通用外键关系,并限制选择其他 3 个模型(将它们视为 BCD) 在同一个应用程序中。我知道我们不能使用 filterget 或任何其他查询集操作的通用外键的局限性。

所以要实现这样的功能,A.objects.filter(generic_object__name="foo") 我必须首先过滤 B、C 和 D 的对象作为查询集,迭代它们并使用泛型反向关系以获取 A 对象作为列表(不是查询集)。

我不确定它会如何影响数据库的 SQL 性能,因为查询不是直接的。

PS:我需要使用通用外键,所以请建议任何 SQL 改进而不是重新设计模型。

使用 Django 1.4.3 和 Postgres。

最佳答案

我想引用 David Cramer 的话:Disqus 的开发者,Django 的提交者

Generic relations are fine. They are not slow, just more difficult to manage in your code base.

我看到很多人告诉别人不要使用泛型关系,因为它很慢,但从来没有说它有多慢。

关于Django 通用外键 - 考虑到 SQL 性能是好是坏?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14333460/

相关文章:

django - django 管理中的错误语言

python - 如何覆盖模型上的 delete() 并让它仍然与相关的删除一起使用

windows - 写入多个文件与。写一个大文件[在固态驱动器中]

Django无法在docker中连接到redis

python - Django 自定义登录页面

.net - 如何提高SQL Server存储过程的性能?

java - 通过elasticsearch和spring进行联合搜索

postgresql - PostgreSQL中的"Abstract"表(继承)

SQL并发插入问题

python - 如何在 odoo-11 中卸载模块时同时删除数据库表?