Instruction MERGE
8i | 9i | 10g | 11g | 12c | 13c | 18c | 19c | 21c | Divers | PL / SQL | SQL | RAC | WebLogic | Linux
Accueil « Articles » 9i « Ici
L’instruction MERGE
a été introduite dans Oracle 9i pour l’insertion ou la mise à jour conditionnelle données en fonction de leur présence, un processus également appelé « upsert ». L’instruction MERGE
réduit les analyses de table et peut effectuer l’opération en parallèle si nécessaire.
- Syntaxe
- Performances
Articles connexes.
- La déclaration MERGE
- Améliorations de la déclaration MERGE dans Oracle Database 10g
Syntaxe
Prenons l’exemple suivant où les données de la table HR_RECORDS
sont fusionnées dans EMPLOYEES
table.
La source peut aussi être une requête.
Performance
Le MERGE
est optimisée pour fusionner des ensembles de données, plutôt que des lignes uniques, comme indiqué dans l’exemple ci-dessous.
Créez les tables de test suivantes. La table source contient toutes les lignes de ALL_OBJECTS
view, alors que la table de destination contient environ la moitié des lignes.
Le code suivant compare les performances de quatre opérations de fusion. Le premier utilise l’instruction simple MERGE
. Le second utilise également l’instruction MERGE
, mais de manière ligne par ligne. Le troisième effectue une mise à jour et insère conditionnellement la ligne si la mise à jour touche zéro ligne. Le quatrième insère la ligne, puis effectue une mise à jour si l’insertion échoue avec une valeur en double sur l’exception d’index.
La sortie montre que l’instruction MERGE
est une commande de magnitude plus rapide que son plus proche rival. La mise à jour / l’insertion effectue presque deux fois la vitesse de l’insertion / de la mise à jour et effectue même la mise à jour ligne par ligne MERGE
.
Il suffit de comparer la mise à jour / l’insertion et les méthodes d’insertion / mise à jour isolées, nous devons nous rappeler que les comparaisons varieront en fonction des données du tableau. Si la plupart des données ne sont pas déjà présentes, l’approche d’insertion / mise à jour peut être meilleure. Si la plupart des données sont déjà présentes, l’approche de mise à jour / insertion sera probablement meilleure. Si vous n’êtes pas sûr, utilisez simplement merge car c’est plus clair.
En plus de l’instruction MERGE
qui est plus rapide, car c’est une instruction DML, elle peut facilement être exécuté en parallèle pour améliorer encore les performances, à condition que votre serveur puisse gérer la charge supplémentaire.
Pour plus d’informations, consultez:
- La déclaration MERGE
- Améliorations de l’instruction MERGE dans Oracle Database 10g
- MERGE
J’espère que cela vous aidera. Cordialement Tim …
Retour en haut.