Istruzione MERGE
8i | 9i | 10g | 11g | 12c | 13c | 18c | 19c | 21c | Varie | PL / SQL | SQL | RAC | WebLogic | Linux
Home “Articoli” 9i “Qui
L’istruzione MERGE
è stata introdotta in Oracle 9i per inserire o aggiornare in modo condizionale dati a seconda della loro presenza, un processo noto anche come “upsert”. L’istruzione MERGE
riduce le scansioni delle tabelle e può eseguire l’operazione in parallelo, se necessario.
- Sintassi
- Prestazioni
Articoli correlati.
- L’istruzione MERGE
- Miglioramenti dell’istruzione MERGE in Oracle Database 10g
Sintassi
Considera il seguente esempio in cui i dati della tabella HR_RECORDS
vengono uniti nella EMPLOYEES
tabella.
La fonte può anche essere una query.
Prestazioni
Il MERGE
è ottimizzata per unire set di dati, piuttosto che singole righe, come mostrato nell’esempio seguente.
Crea le seguenti tabelle di test. La tabella di origine contiene tutte le righe del ALL_OBJECTS
view, mentre la tabella di destinazione contiene circa la metà delle righe.
Il codice seguente confronta le prestazioni di quattro operazioni di unione. Il primo utilizza l’istruzione MERGE
diretta. Il secondo utilizza anche l’istruzione MERGE
, ma in modo riga per riga. Il terzo esegue un aggiornamento e inserisce la riga in modo condizionale se l’aggiornamento tocca zero righe. Il quarto inserisce la riga, quindi esegue un aggiornamento se l’inserimento non riesce con un valore duplicato nell’eccezione dell’indice.
L’output mostra che l’istruzione MERGE
è un ordine di grandezza più veloce del suo rivale più vicino. L’aggiornamento / inserimento esegue quasi il doppio della velocità dell’inserimento / aggiornamento e persino esegue il MERGE
riga per riga.
Basta confrontare l’aggiornamento / inserimento e i metodi di inserimento / aggiornamento in isolamento, dobbiamo ricordare che i confronti varieranno a seconda dei dati nella tabella. Se la maggior parte dei dati non sarà già presente, l’approccio di inserimento / aggiornamento potrebbe essere migliore. Se la maggior parte dei dati è già presente, l’approccio di aggiornamento / inserimento sarà probabilmente migliore. Se non sei sicuro, usa semplicemente merge perché è più chiaro.
Oltre alla semplice istruzione MERGE
è più veloce, perché è un’istruzione DML che può essere eseguito facilmente in parallelo per migliorare ulteriormente le prestazioni, a condizione che il server sia in grado di gestire il carico aggiuntivo.
Per ulteriori informazioni vedere:
- L’istruzione MERGE
- Miglioramenti all’istruzione MERGE in Oracle Database 10g
- MERGE
Spero che questo aiuti. Saluti Tim …
Torna all’inizio.