getting data from multiple sources leads to the creation of a temporary table. Those tables are costly to create and should be avoided if possible or at least created only once and not inside every transaction.
Here is a thread about cost of temporary tables on postgresql : http://www.nabble.com/Create-and-drop-temp-table-in-8.3.4-td20347767.html
Which is summarized by this sentence :
As I learned today, creating a temporary table in PostgreSQL can easily create four files and do dozens of updates to system tables; that's all before you start actually inserting any data into the temporary table.
We could use ON COMMIT DELETE ROWS if the table are created only once per session.
|appeared in||<not specified>|
|done in||<not specified>|
|closed by||<not specified>|