以mysql為例。
遇到這個問題的時候最先想到的方法就是先從各個表中查詢出相應的數據後使用程序循環遍歷組裝後在插入到數據庫中。這是最直觀的解決辦法,但是這個方法處理超大結果集的時候就出現問題,例如:超出內存限制,運行時間過長等等。。。
這時使用另外一種方法應該會有幫助,那就是使用mysql的on duplicate key update方法來分步驟組合數據。
現在有3張表a,b,c。每個表的結構如下:
a表包含字段:id,a,b,c;
b表包含字段:aID,d,e,f;字段aID對應表a中的id
c表包含字段:aID,a,b,c,d,e,f;字段aID對應表a中的id
現在要把a表和b表中的數據組合後插入到c表中,其中a和b均包含1000W+的數據,如果采用查詢-》組裝-》插入數據庫的方式,在查詢步驟和組裝步驟均會超出內存限制。
這是可以采用如下步驟:
這樣就把a和b中的數據組合插入到了c中。