django - Postgres 数组

标签 django postgresql

我们正在使用 django-dbarray在 postgres 中使用数组的模块。我一直在做一些关于 postgres 数组的研究,一些开发人员说他们不建议使用存储超过 X 值的 postgres 数组。有时,这是十个,我听说有三十个之多。在性能开始下降之前,对于可以或应该在数组中存储多少值是否达成共识?

供引用,上面的DB主要是只读DB。

我们正在努力决定应该在哪里使用中间表以及应该在哪里使用 postgres 数组。

另一个相关问题:在针对表中的列创建索引时,该列存储数组值(比方说 bigint [])。我意识到存储在数组中的值不会被索引,而只会索引数组本身(我假设这类似于 C 指针)。与仅拥有一个中间表相比,这效率如何?

我们可能需要根据值创建连接或在 where 子句中包含一些特定值,我担心某些性能可能会降低,我们最好在需要创建时拥有一个中间表一个连接。

最后,考虑到我们使用的是 dbarray,与仅使用带有标准 django ORM 的中间表相比,它的效率如何(假设上述问题中的 where 子句没有连接)?

谢谢

最佳答案

PostgreSQL 支持 GINGiST intarrays 索引,这允许您像这样运行查询:

SELECT  *
FROM    mytable
WHERE   myarray @> ARRAY[1, 2]
-- returns arrays which contain 1 AND 2

或者这个:

SELECT  *
FROM    mytable
WHERE   myarray && ARRAY[1, 2]
-- returns arrays which contain 1 OR 2

高效地。

第一个查询有点难以使用规范化模式有效地重写。

关于django - Postgres 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10703262/

相关文章:

Django 管理员不喜欢 SQL 插入

python - Django:调整@login_required 装饰器

postgresql - Geodjango导入django.contrib.gis.gdal时出现异常: OSError:/usr/lib/libgdal. so.1: undefined symbol :sqlite3_column_table_name

postgresql - PostgreSQL 中的 HAVING 子句

ruby-on-rails - rails 4 PG::ConnectionBad 无法连接到服务器

postgresql - 如何修复 "OperationalError: (psycopg2.OperationalError) server closed the connection unexpectedly"

python - django详细信息()有一个意外的关键字参数 'pk'

python - Django 如何在模板中设置隐藏输入的值

python - Django结合3个查询集

ruby-on-rails - 如何通过迁移将 `unique` 约束添加到现有索引