Here is my query:
select count(*)
from email_prod_junc j
inner join trckd_prod t5 on j.trckd_prod_sk = t5.trckd_prod_sk
inner join prod_brnd b on t5.prod_brnd_sk = b.prod_brnd_sk
inner join email e on j.email_sk = e.email_sk
inner join dm_geography_sales_pos_uniq u on (u.emp_sk = e.emp_sk and u.prod_brnd_sk = b.prod_brnd_sk)
The explain plan says:
Cartesian Join between DM_GEOGRAPHY_SALES_POS_UNIQ and EMAIL_PROD_JUNC.
I don’t understand why because there is a join condition for each table.
I solved this by adding the ORDERED hint:
I got the information from here
If you specify the tables in the order you want them joined and use this hint, Oracle won’t spend time trying to figure out the optimal join order, it will just join them as they are ordered in the FROM clause.