Postgresql RESTAPI-急切加载嵌套资源
我想知道我是否正确地渴望在API中加载嵌套资源 在我的应用程序中,Postgresql RESTAPI-急切加载嵌套资源,postgresql,api,rest,Postgresql,Api,Rest,我想知道我是否正确地渴望在API中加载嵌套资源 在我的应用程序中,公司可以拥有许多技术,以及工具。该关系存储在联接表companys\u technologies和companys\u tools中 在端点/companys,我想返回所有公司及其技术和工具,如下所示: [ { company_name: 'company_1', ... technologies: [ {...}, ..., {...} ], too
公司
可以拥有许多技术
,以及工具
。该关系存储在联接表companys\u technologies
和companys\u tools
中
在端点/companys
,我想返回所有公司
及其技术
和工具
,如下所示:
[
{
company_name: 'company_1',
...
technologies: [
{...},
...,
{...}
],
tools: [
{...},
...,
{...}
]
},
...,
{
company_name: 'company_n',
...
}
]
为了返回30家公司,我最终做了61个查询
- 一个查询最多可获得30家公司(1个查询)
- 通过这些公司来获取每一家公司的技术。(30个查询)
- 通过公司循环,为每个公司获取工具。(30个查询)
即使所有外键上都有索引,响应时间也非常高。在我的API设计中,进行这么多查询是不可避免的,还是有其他方法?要简单地进行这三个查询,您可以查询所有公司,然后是公司与技术的连接,然后是公司与工具的连接。然后对每一个进行一次迭代以构建响应。我的SQL有点生疏,但我相信它可以在1个查询中完成。但是3比n*2+1好得多。在同一步骤中检索技术和工具是强制性的吗?或者,你可以有一个指向它们的链接,只在向下钻取时执行一个目标查询,非常简单地进行这三个查询,你可以查询所有公司,然后是公司到技术的链接,然后是公司到工具的链接。然后对每一个进行一次迭代以构建响应。我的SQL有点生疏,但我相信它可以在1个查询中完成。但是3比n*2+1好得多。在同一步骤中检索技术和工具是强制性的吗?或者,您可以使用一个指向它们的命令,并仅在向下钻取时执行目标查询