> Hold on, let's diagnose the real problem before we look for solutions.
> What does explain <query> tell you? Have you analyzed the database?
This is the QUERY PLAN
Hash Left Join (cost=25.00..412868.31 rows=4979686 width=17)
Hash Cond: (("outer".groupnum = "inner".groupnum) AND
(("outer".sku)::text = ("inner".sku)::text))
Filter: (("inner".url IS NULL) OR (("inner".url)::text = ''::text))
-> Seq Scan on prdt_old mc (cost=0.00..288349.86 rows=4979686 width=17)
-> Hash (cost=20.00..20.00 rows=1000 width=78)
-> Seq Scan on prdt_new mi (cost=0.00..20.00 rows=1000 width=78)
> What are your postgresql.conf settings?
What suspected specific setting need to be changed?