Performance 管理记录的多对多关系策略 介绍 大家好!

Performance 管理记录的多对多关系策略 介绍 大家好!,performance,many-to-many,Performance,Many To Many,我的团队正在开发一个新功能。在开发过程中,我们面临着对数据库性能的质疑,到目前为止,我们有一些不同的看法。。。所以我来了 table结构 例如,多对多关系: 情景 考虑到上面的表,我们的API必须服务于POST端点,该端点接收域ID作为路径变量和包含用户ID列表的json,类似于: Path : /domain/1 Body Json : { "users":[ "1", "2"

我的团队正在开发一个新功能。在开发过程中,我们面临着对数据库性能的质疑,到目前为止,我们有一些不同的看法。。。所以我来了

table结构 例如,多对多关系:

情景 考虑到上面的表,我们的API必须服务于POST端点,该端点接收域ID作为路径变量和包含用户ID列表的json,类似于:
Path : /domain/1

Body Json : 
    {
      "users":[
        "1",
        "2"
      ]
    }
有了这个列表,我们必须在多对多域用户上保持用户和域之间的关系。在一个端点中,我们必须管理多对多表寄存器

问题 我们用两种不同的方式做了这件事,我在这里想问你的意见,什么更有效,更高效等等。。在数据库方面,考虑I/O
策略A(清洁并插入)
首先,我们删除域\用户中的所有寄存器,其中域\ id字段等于请求的域id,然后在域\用户中插入该域的请求列表的所有用户。考虑到上面的Json示例,在这个策略中,我们将在表domain_用户上使用两个寄存器执行一次删除和一次插入

策略B(逻辑关系)
首先,我们通过选择域用户(其中域ID等于请求的域ID),比较请求附带的用户列表和已链接该域ID的用户列表,因此我们执行以下条件:
1-有一个用户出现在Json请求列表中,但不在数据库列表中?插入那个
2-有一个用户存在于数据库列表中,但不存在于Json请求中?删除那个
3-两个列表中都有一个用户(数据库和Json请求)?什么也不做。
在该策略中,对数据库执行的操作数取决于域用户多对多表上已经存在的寄存器数


考虑到数据库的更好性能,我们应该遵循两种策略中的哪一种?
Obs:我们的后端是Java,我们现在使用的数据库是PostgreSQL版本12
我在“database Adm”堆栈上发布了文章,但现在在这里尝试o/