I have this query
INSERT INTO interactions( user_id, external_object_id, origin, interaction_type, interaction_sub_type, published_at, origin_id, created_at, updated_at) SELECT find_user(id), find_external_object(external_object_id), 'facebook' as origin, interaction_type, interaction_sub_type, published_at, origin_id, current_date, current_date from legacy_table
legacy_table have around 9 million records, and it is running for around 20 hours now and
find_external_object are functions that look for the return the id of an user and an external object (of course) based on id from legacy table, like this
SELECT legacy_user.uid into uid from legacy_user where legacy_user.id = $1; SELECT users.id into user_id from users where users.uid = uid; RETURN user_id;
What can I do to improve the query?