2017-08-15 20 views
0

说我有一个entities表(200mil行+),其中每行具有contentId柱引用一块存在于无论是postscommentsreplies表内容(不FK的)。车削多态性表关联到一个类型栏

现在,对于entities中的每一行,我想检查哪个表中存在相关联的内容,并将其作为类型返回。

这是数据迁移过程的一部分。有关如何以相对高效的方式执行此操作的任何想法?

回答

1

我会创建一个映射表,然后在您的迁移中使用它,基于以下查询。这可能是昂贵的,但你只需要运行一次。如果您的实体数据集是直播,那么您可以添加触发器来自动为您维护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) 
;