Optimisation des insertions multi-lignes Oracle
Ce guide détaille les méthodes efficaces pour insérer plusieurs lignes dans les bases de données Oracle, en se concentrant sur des approches supérieures à celles utilisées dans MySQL.
La INSERT ALL
Déclaration
La syntaxe INSERT ALL
d'Oracle fournit une solution robuste pour les insertions multilignes :
<code class="language-sql">INSERT ALL INTO t (col1, col2, col3) VALUES ('val1_1', 'val1_2', 'val1_3') INTO t (col1, col2, col3) VALUES ('val2_1', 'val2_2', 'val2_3') INTO t (col1, col2, col3) VALUES ('val3_1', 'val3_2', 'val3_3') . . . SELECT 1 FROM DUAL;</code>
Ici :
t
désigne la table cible.col1
, col2
, col3
représentent les colonnes du tableau.val1_1
à val3_3
sont les valeurs à insérer.DUAL
est une table virtuelle intégrée utilisée pour les requêtes sur une seule ligne.Syntaxe simplifiée (Oracle 23c et versions ultérieures)
Oracle 23c a introduit une syntaxe plus simplifiée :
<code class="language-sql">INSERT INTO t(col1, col2, col3) VALUES ('val1_1', 'val1_2', 'val1_3'), ('val2_1', 'val2_2', 'val2_3'), ('val3_1', 'val3_2', 'val3_3');</code>
Cette approche offre une concision et des performances améliorées par rapport à INSERT ALL
.
Meilleures pratiques en matière de performances
Bien que la syntaxe la plus récente soit généralement supérieure pour les insertions groupées, envisagez de limiter le nombre de lignes par instruction d'insertion afin de minimiser la surcharge d'analyse et de maximiser l'efficacité, même avec la syntaxe améliorée d'Oracle 23c. Pour les ensembles de données extrêmement volumineux, étudiez à l'aide d'autres techniques telles que SQL*Loader.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!