2012-02-24 10 views
6

Ho letto che Oracle supporta l'unione di join con i predicati di join di disuguaglianza. Esiste un riferimento online all'algoritmo utilizzato nell'implementazione di tale join? Se qualcuno sa come farlo, puoi metterlo in risposta?Algoritmo per unione di join con condizione di disuguaglianza

+0

questo è diverso dall'unione di uguaglianza? – zinking

+0

@Prafulla: se la tua domanda non ha avuto risposta, dovresti prendere in considerazione di segnalarlo per la migrazione a (il sito gemello): dba.stackexchange.com –

risposta

-1

C'è un esempio qui: http://www.serkey.com/oracle-skyline-query-challenge-bdh859.html

E 'questo quello che stai cercando di fare? (la parola chiave è "unione morbida")

+0

Il link è rotto. –

+0

È stato pubblicato quasi due anni fa - guarda nella macchina del wayback –

+0

"La macchina che serve questo file non funziona. Ci stiamo lavorando." Questo è il motivo per cui la maggior parte delle risposte al solo collegamento vengono eliminate in questi giorni. –

1

This è quello che stai cercando.

7,4 sort merge join

Sort merge join possono aderire a righe da due fonti indipendenti. Nel generale , i join hash hanno prestazioni migliori rispetto all'ordinamento dei join di unione. Tuttavia, i join di unione di ordinamento possono risultare migliori dei join hash se sono presenti entrambe le seguenti condizioni:

Le origini di riga sono ordinate. Non è richiesta un'operazione di ordinamento. Tuttavia, se un join di unione di ordinamento implica la scelta di un metodo di accesso più lento (una scansione dell'indice anziché una scansione completa della tabella), quindi il vantaggio dell'utilizzo di potrebbe andare perso.

I join di unione di ordinamento sono utili quando la condizione di join tra due tabelle è una condizione di disuguaglianza come <, < =,> o> =. I join di unione di ordinamento funzionano meglio dei join di cicli nidificati per i set di dati di grandi dimensioni. Hash join richiede una condizione di uguaglianza.

In un join unione, non esiste un concetto di tabella di guida. Il join si compone di due fasi:

Ordina operazione di join

Entrambi gli ingressi sono ordinati sulla chiave di join.

merge join operazione

Le liste ordinate vengono uniti.

Se l'input è ordinato dalla colonna di unione, un'operazione di unione di ordinamento non viene eseguita per tale origine riga. Tuttavia, un join di unione di ordinamento crea sempre un buffer di ordinamento posizionabile per il lato destro del join in modo che possa cercare l'ultima corrispondenza nel caso in cui i valori delle chiavi di join duplicati escano dal lato sinistro del join.