2017-08-15 48 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) 
;