Méthode efficace d'insertion par lots de données dans la base de données Oracle
Il existe de nombreuses façons d'insérer plusieurs lignes de données dans la base de données Oracle. La méthode d'insertion par lots couramment utilisée dans MySQL n'est pas directement prise en charge dans Oracle.
Utilisez l'instruction INSERT ALL
Dans Oracle, vous pouvez utiliser l'instruction INSERT ALL
pour l'insertion par lots. Cette instruction contient plusieurs clauses INTO
, chaque clause représente une ligne de données à insérer. L'instruction se termine par SELECT 1 FROM DUAL
comme signe de la fin de l'insertion.
<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>
Syntaxe simplifiée Oracle 23c
Oracle 23c introduit une syntaxe d'insertion groupée simplifiée qui élimine le besoin de l'instruction INSERT ALL
. Plusieurs lignes de données peuvent être insérées à l'aide d'une liste séparée par des virgules comme celle-ci :
<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>
Considérations relatives aux performances
Pour de grandes quantités de données, des problèmes de performances doivent être pris en compte. La nouvelle syntaxe INSERT dans Oracle 23c est beaucoup plus rapide que INSERT ALL
et a des performances comparables à celles de la méthode UNION ALL
. Cependant, l’insertion de plus de 1 000 lignes de données à la fois entraîne une augmentation exponentielle du temps d’analyse.
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!