I am working on a query qhich has lot of RIGHT and LEFT Outer joins. This takes
almost 2 hours to execute.
SELECT mstcurrency.pkcurid, mstcurrency.curswift_code,
mstproducts.pkprdid, mstproducts.prdname,
mstproducts.fkcnvid_prdbaseuom,
cpuser.uspname || ' ' || cpuser.uspsurname as uspname,
cpuser.pkuspid, cpuser.uspnotify_number AS
cpusercontactdetails, cpuser.fktrdid_usptradhouseid as cpthid,
mstcompanies.pkcmpid, mstcompanies.cmpname,
mstcompanies.cmpaccount_type,
mstfacilityviews.facname, mstfacilityviews.pkfacid
FROM mstuserprofiles cpuser RIGHT OUTER JOIN mstcompanies
ON cpuser.fktrdid_usptradhouseid = mstcompanies.fktrdid_cmptradhouseid
AND cpuser.pkuspid = mstcompanies.cmpcontact_userid
LEFT OUTER JOIN mstcurrency
ON mstcompanies.fktrdid_cmptradhouseid = mstcurrency.fktrdid_curtradhouseid
AND mstcompanies.fkcurid_cmpcurid = mstcurrency.pkcurid
LEFT OUTER JOIN mstproducts
ON mstcompanies.fktrdid_cmptradhouseid = mstproducts.fktrdid_prdtradhouseid
AND mstcompanies.cmpmain_product = mstproducts.pkprdid
RIGHT OUTER JOIN mstuserprofiles
LEFT OUTER JOIN mstfacilityviews
ON mstuserprofiles.uspdefaultfacility = mstfacilityviews.pkfacid
ON mstcompanies.pkcmpid = mstuserprofiles.uspdefaultcounterparty
AND mstcompanies.fktrdid_cmptradhouseid =
mstuserprofiles.fktrdid_usptradhouseid
WHERE mstuserprofiles.pkuspid = 101 AND mstuserprofiles.fktrdid_usptradhouseid = 1
---------------------------(end of broadcast)---------------------------
TIP 6: Have you searched our list archives?
http://archives.postgresql.org