假设我有一个entities
表(200行行+),其中每行都有一个contentId
列,该列引用posts
,{{1}中存在的一段内容}和comments
表(没有FK' s)。
现在,对于replies
中的每一行,我想检查相关内容存在于哪个表中,并将其作为类型返回。
这是数据迁移过程的一部分。关于如何以相对高效的方式执行此操作的任何想法?
答案 0 :(得分:1)
我会创建一个映射表,然后在迁移中使用它,基于以下查询。它可能很昂贵,但你只需要运行一次。如果您的实体数据集是 live ,那么您可以添加触发器以自动维护 entities_type 关联表。
根据后续步骤,维护三个不同的表而不是像这样的标记表可能更聪明。我希望它可以让你开始吧。
create table entities_type as
select 'post', contentId
from entities
join posts using(contentId)
union all
select 'comments', contentId
from entities
join comments using(contentId)
union all
select 'replies', contentId
from entities
join replies using(contentId)
;