Hi this is more of a general question when I run the query below my query takes about 1.5hours to run, however when I switch from joining "ACC_ID" to "ULT_ID" then my query takes 5+ hours. I know without the source information it may be hard to diagnose, but I am wondering if there's something basic I'm missing.
The amount of unique values for "ACC_ID" and "ULT_ID" are around the same
Original Query
SELECT DISTINCT
op."Acc_ID"
, op."Oppty_ID"
, op."Prod1op"
, op."Prod2op"
, CASE WHEN ac1."Acc_ID" IS NOT NULL AND ac2."Acc_ID" IS NOT NULL AND ac3."Acc_ID" IS NOT NULL
THEN 'Match @ ALL Levels'
WHEN ac1."Acc_ID" IS NOT NULL AND ac2."Acc_ID" IS NOT NULL
THEN 'Match @ ACC_ID, Prod1 Levels'
WHEN ac1."Acc_ID" IS NOT NULL
THEN 'Match @ ACC_ID Level'
ELSE 'No Match @ ACC_ID Level' END CF
FROM Oppty op
LEFT JOIN Acc ac1 ON op."Acc_ID" = ac1."Acc_ID"
LEFT JOIN Acc ac2 ON op."Acc_ID" = ac2."Acc_ID"
AND ac2."Prod1acc" = op."Prod1op"
LEFT JOIN Acc ac3 ON op."Acc_ID" = ac3."Acc_ID"
AND ac3."Prod1acc" = op."Prod1op"
AND ac3."Prod2acc" = op."Prod2op"
ORDER BY op."Acc_ID", op."Prod1op"
Query which takes much longer
SELECT DISTINCT
op."ULT_ID"
, op."Oppty_ID"
, op."Prod1op"
, op."Prod2op"
, CASE WHEN ac1."ULT_ID" IS NOT NULL AND ac2."ULT_ID" IS NOT NULL AND ac3."ULT_ID" IS NOT NULL
THEN 'Match @ ALL Levels'
WHEN ac1."ULT_ID" IS NOT NULL AND ac2."ULT_ID" IS NOT NULL
THEN 'Match @ ULT_ID, Prod1 Levels'
WHEN ac1."ULT_ID" IS NOT NULL
THEN 'Match @ ULT_ID Level'
ELSE 'No Match @ ULT_ID Level' END CF
FROM Oppty op
LEFT JOIN Acc ac1 ON op."ULT_ID" = ac1."ULT_ID"
LEFT JOIN Acc ac2 ON op."ULT_ID" = ac2."ULT_ID"
AND ac2."Prod1acc" = op."Prod1op"
LEFT JOIN Acc ac3 ON op."ULT_ID" = ac3."ULT_ID"
AND ac3."Prod1acc" = op."Prod1op"
AND ac3."Prod2acc" = op."Prod2op"
ORDER BY op."ULT_ID", op."Prod1op"