问题:是否索引 Django ArrayField?

在 Postgres 9.6 上使用 Django 1.8。我的一个模型有一个 ArrayField:

packages = ArrayField( models.CharField( max_length = 200 ), blank = True )

第一个问题是我应该添加索引吗?文档说

目前使用 db_index 会创建一个 btree 索引。这对查询没有特别重要的帮助。更有用的索引是 GIN 索引,您应该使用 RunSQL 操作创建它。

但目前尚不清楚我应该如何处理。

如果是,第二个问题,是在哪里放置 "db_index u003d True" ?像这样?:

packages = ArrayField( models.CharField( db_index = True, max_length = 200 ), blank = True )

解答

这就是 django 文档所说的。这就是postgresql 文档所说的

数组不是集合;搜索特定的数组元素可能是数据库设计错误的标志。考虑使用一个单独的表,其中每个项目将是一个数组元素。这将更容易搜索,并且对于大量元素可能会更好地扩展。

我应该为其添加索引吗? 这意味着您正在考虑搜索数组字段。 Postgresql 建议您不要这样做。事实上,您不应该将数组或 CSV 存储在单个列中。您应该做的是规范化您的表格。

如果是,第二个问题是在哪里放置“db_index u003d True”? 由于上述原因,不敬。

Logo

PostgreSQL社区为您提供最前沿的新闻资讯和知识内容

更多推荐