3

我们目前在 MySQL 数据库中有两个需要连接的大表(表 A 与表 B 具有一对多关系),出于性能原因,我们希望删除此连接。

是否有一种明智的方法来获取表 B 中的行并将它们表示在表 A 的一列(或多列)中?我们已经研究过使用复合数据类型的数组,但似乎没有一个好的方法来索引这些数据,或者有效地查询它。

我们目前正在使用 MySQL,但正在考虑迁移到 Postgres。不过,我们肯定会考虑任何可以为我们解决这个问题的数据库。

4

2 回答 2

1

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

于 2012-06-19T12:59:55.700 回答
0

选项将是在应用层获取相关数据。即首先从表一中获取一行,然后在第二个查询中从第二个表中获取相关行。尝试评估两种代码的性能。那是一个查询和两个查询。

不过,正如评论部分所述。尝试在连接列上添加索引。尝试使用 where 条件来限制数据。最重要的是尝试限制作为输出所需的行数的结果集。使用限制将减少获取额外行所需的时间。

于 2012-06-19T13:14:58.127 回答