在Django模型中的GenericForeignKey上创建SQL索引是否可行/合理?
我想对postgreSQL数据库中的大量(~1百万)对象执行查找。我的查找基于相关模型上的GenericForeignkey,它实际上存储为两个字段:object_id(被链接到的对象的pk)和content_type(表示被链接对象类型的Django ContentType模型的FK)到)。
在SQL术语中,这基本上是:
WHERE ("my_model"."content_type_id" = x AND "my_model"."object_id" = y)
object_id
是一个非唯一字段 - 由于通用FK可以链接到多个模型,因此不同类型的对象可能具有相同的pk
。
我想知道我是否可以通过在my_model.object_id
上创建一个非唯一索引来加快查询时间。我对索引的了解是有限的,所以我可能没有正确理解它们的用法,但我知道Django会自动创建正常ForeignKey关系的索引,所以我假设有一个相关的加速。
有没有人有为GenericForeignKeys创建索引的经验?您是否发现性能提升?非常感谢任何帮助或见解。