我们目前在 MySQL 数据库中有两个需要连接的大表(表 A 与表 B 具有一对多关系),出于性能原因,我们希望删除此连接。
是否有一种明智的方法来获取表 B 中的行并将它们表示在表 A 的一列(或多列)中?我们已经研究过使用复合数据类型的数组,但似乎没有一个好的方法来索引这些数据,或者有效地查询它。
我们目前正在使用 MySQL,但正在考虑迁移到 Postgres。不过,我们肯定会考虑任何可以为我们解决这个问题的数据库。
我们目前在 MySQL 数据库中有两个需要连接的大表(表 A 与表 B 具有一对多关系),出于性能原因,我们希望删除此连接。
是否有一种明智的方法来获取表 B 中的行并将它们表示在表 A 的一列(或多列)中?我们已经研究过使用复合数据类型的数组,但似乎没有一个好的方法来索引这些数据,或者有效地查询它。
我们目前正在使用 MySQL,但正在考虑迁移到 Postgres。不过,我们肯定会考虑任何可以为我们解决这个问题的数据库。
Consider using a intermediate view, it will speed up the process.
if [A]-1---n-[B], you can also set a foreign key to A into B, then AxB cartesian product no longer needed
选项将是在应用层获取相关数据。即首先从表一中获取一行,然后在第二个查询中从第二个表中获取相关行。尝试评估两种代码的性能。那是一个查询和两个查询。
不过,正如评论部分所述。尝试在连接列上添加索引。尝试使用 where 条件来限制数据。最重要的是尝试限制作为输出所需的行数的结果集。使用限制将减少获取额外行所需的时间。