"Merge join" and "NO_MERGE" hint

Hi all.
I’m very confused and I nee you to clarify me!

I now the idea of a merge join:

A merge join basically sorts all relevant rows in the first table by
the join key , and also sorts the relevant rows in the second table by
the join key, and then merges these sorted rows.

I understand what this mean, however I don’t understand the hint
“NO_MERGE”, I don’t if the idea of this hint is related to the merge
join concept. I don’t understand the description that is in the ORACLE
website.

For example :

SELECT *
FROM CUSTOMER C
WHERE CUST.TYPE IN (‘O’,’R’)
   AND  CUST.STATUS=’A’
   AND  CUST.VERSION (   SELECT MAX(VERSION)
                FROM CUSTOMER C1
                WHERE C1.CUSTOMER_ID = CUST.CUSTOMER
                    AND C1.TYPE = CUST.TYPE
 )


This query takes long time the retrieve the result, something as 3min,
but with this simple change the result is retrieved in a few seconds:
10-12 seconds.




SELECT *
FROM CUSTOMER C
WHERE CUST.TYPE IN (‘O’,’R’)
   AND  CUST.STATUS=’A’
   AND  CUST.VERSION (   SELECT /*NO_MERGE*/ MAX(VERSION)
                FROM CUSTOMER C1
                WHERE C1.CUSTOMER_ID = CUST.CUSTOMER
                    AND C1.TYPE = CUST.TYPE
 )


What do this hint ? Avoid the order of “VERSION” of the “CUST” ? This
hint applicable to “CUST” or “C1”( inline view) table ?

I don’t understande how this hint works IN THIS SITUATION.



Thanks.
Santana

-- 
You received this message because you are subscribed to the Google
Groups "Oracle PL/SQL" group.
To post to this group, send email to Oracle-PLSQL@googlegroups.com
To unsubscribe from this group, send email to
oracle-plsql-unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/Oracle-PLSQL?hl=en

Reply via email to