Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/9.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
Postgresql Postgres:多表与单表和多索引_Postgresql - Fatal编程技术网

Postgresql Postgres:多表与单表和多索引

Postgresql Postgres:多表与单表和多索引,postgresql,Postgresql,我正在研究的当前应用程序有多个实体,让我们称它们为A、B和C,每个实体都由所属组的id和group\u id唯一标识。 目前,这些实体的所有实例都存储在一个具有以下字段的表中: id: primary key group_id: id of the group data: jsonb field containing all the custom entity fields 我担心将所有实体存储在一个表中,首先是因为表本身的大小,然后因为它们在不同的应用程序中使用,它们都需要进行不同的索引

我正在研究的当前应用程序有多个实体,让我们称它们为
A
B
C
,每个实体都由所属组的
id
group\u id
唯一标识。 目前,这些实体的所有实例都存储在一个具有以下字段的表中:

id: primary key
group_id: id of the group 
data: jsonb field containing all the custom entity fields 
我担心将所有实体存储在一个表中,首先是因为表本身的大小,然后因为它们在不同的应用程序中使用,它们都需要进行不同的索引,因为
a
B
C
的实例中的字段不同

我在考虑两种方法:

  • 将不同表中的实体分开,每个组id对应一个实体,为每个表添加特定于实体的索引
  • 将实例保存在一个表中,为
    组id
    设置索引,然后根据
    组id
    设置不同的索引,并考虑必须索引的每个实体的字段

在这种情况下,最好的方法是什么?或者我还缺少其他选择吗

您讨论了每个实体的不同字段,但目前只有一个json blob。您是打算将其保存在一个blob中,还是打算为未经超声处理(这可能是一个词)的数据创建新字段?@eurotrash将其保存为json blob。那么是jsonb而不是json吗?@eurotrash它是
jsonb
indeedOk-这纯粹是我的观点,基于个人偏好。我会把它们放在同一张表中,因为它们在结构上和概念上都是相同的。然后在group_id+jsonb字段上创建索引。不过我对这件事并没有什么强烈的感觉,不管怎样我都会很高兴的。最好同时尝试这两种方法,填充数据并运行一些性能测试。如果字段是实际的表字段,我肯定会将它们移动到不同的表中。