在Postgres 9.6上使用Django 1.8。 我的一个模型有一个ArrayField:
packages = ArrayField( models.CharField( max_length = 200 ), blank = True )
第一个问题是我应该为它添加索引吗? 文档说
目前使用db_index将创建一个btree索引。事实并非如此 为查询提供特别重要的帮助。一个更有用的索引 是一个GIN索引,您应该使用RunSQL操作创建。
但不清楚我应该怎么做。
如果是,第二个问题,就是放置" db_index = True" ? 像这样?:
packages = ArrayField( models.CharField( db_index = True, max_length = 200 ), blank = True )
答案 0 :(得分:2)
这就是django docs所说的。这就是postgresql docs所说的
数组不是集合;搜索特定的数组元素可以是一个 数据库错误设计的标志。考虑使用带有行的单独表 对于每个将成为数组元素的项目。这会更容易 搜索,并且可能会针对大量元素进行更好的扩展。
我应该为它添加索引吗? 这意味着您正在考虑搜索数组字段。 Postgresql建议你不要。实际上,您不应该将数组或CSV存储在单个列中。你应该做的是规范你的表格。
如果是,第二个问题,是“db_index = True”的位置? 由于上述原因而不敬。