Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Django泛型关系的SQL索引_Django_Django Models_Indexing_Django Postgresql - Fatal编程技术网

Django泛型关系的SQL索引

Django泛型关系的SQL索引,django,django-models,indexing,django-postgresql,Django,Django Models,Indexing,Django Postgresql,在Django模型中的GenericForeignKey上创建SQL索引是否可能/合理 我想在我的postgreSQL数据库中对大量(~100万)对象执行查找。我的查找基于相关模型上的GenericForeignkey,它实际上存储为两个字段:object_id(链接到的对象的pk)和content_type(表示链接到的对象类型的Django ContentType模型的FK) 在SQL术语中,这本质上是: WHERE ("my_model"."content_type_id" = x AND

在Django模型中的GenericForeignKey上创建SQL索引是否可能/合理

我想在我的postgreSQL数据库中对大量(~100万)对象执行查找。我的查找基于相关模型上的GenericForeignkey,它实际上存储为两个字段:object_id(链接到的对象的pk)和content_type(表示链接到的对象类型的Django ContentType模型的FK)

在SQL术语中,这本质上是:

WHERE ("my_model"."content_type_id" = x AND "my_model"."object_id" = y) 
object\u id
是一个非唯一字段-由于通用FK可以链接到多个模型,不同类型的对象可能具有相同的
pk

我想知道是否可以通过在
我的\u model.object\u id
上创建一个非唯一索引来加快查询时间。我对索引的了解是有限的,所以我可能没有正确理解它们的用法,但我知道Django会自动在正常的ForeignKey关系上创建索引,所以我假设存在相关的加速


有没有人有过为GenericForeignKey创建索引的经验?您是否发现由此带来的性能提升?非常感谢您提供的任何帮助或见解。

您可以在中查看索引部分。请记住,您可以在事务中创建索引并轻松分析它们的性能。虽然我不能直接回答您的问题,但您可以自己做一些基准测试,检查表中已经存在哪些索引,解释当前查询,(您可以通过打印QuerySet.query获得此结果)更改数据架构(添加索引)并解释againNote查询,索引不必只在一列上;如果您有这样一个由两部分组成的键,您可能希望在两列之间都有一个索引。请注意,顺序可能会有所不同(索引
(内容类型id,对象id)
与索引
(对象类型id,内容类型id)