在 Postgres 9.6 上使用 Django 1.8。我的模型之一有一个 ArrayField:
packages = ArrayField( models.CharField( max_length = 200 ), blank = True )
Run Code Online (Sandbox Code Playgroud)
第一个问题是我应该为其添加索引吗?文件说
目前使用 db_index 将创建一个 btree 索引。这对于查询并没有提供特别显着的帮助。更有用的索引是 GIN 索引,您应该使用 RunSQL 操作创建它。
但目前还不清楚我应该用它做什么。
如果是,第二个问题是在哪里放置“db_index = True”?像这样吗?:
packages = ArrayField( models.CharField( db_index = True, max_length = 200 ), blank = True )
Run Code Online (Sandbox Code Playgroud)
这就是 django 文档所说的。这就是postgresql 文档所说的
数组不是集合;搜索特定的数组元素可能是数据库设计错误的标志。考虑使用一个单独的表,其中每个项目都有一行,该项目将成为数组元素。这将更容易搜索,并且对于大量元素来说可能会更好地扩展。
我应该为其添加索引吗? 这意味着您正在考虑搜索数组字段。Postgresql 建议你不要这样做。事实上,您不应该将数组或 CSV 存储在单个列中。您应该做的是标准化您的表格。
如果是,第二个问题是在哪里放置“db_index = True”? 由于上述原因而不敬。
归档时间: |
|
查看次数: |
2909 次 |
最近记录: |