J'ai une requête comme celle-ci et je me demandais quel type de SQL est produit en batch un PreparedStatement.En Java, comment PreparedStatement fonctionne pour la requête suivante
INSERT INTO table1 (id, version, data)
VALUES (?, ?, ?)
ON DUPLICATE KEY UPDATE
table1.data = IF(table1.version > table2.version, table1.data, table2.data),
table1.version = IF(table1.version > table2.version, table1.version, table2.version)
La question est, sera-t résoudre ce à une copie de toute cette chaîne SQL pour chaque ligne dans le lot ou entend-elle faire quelque chose comme:
INSERT INTO table1 (id, version, data)
VALUES (a1, b1, c1), (a2, b2, c2), (a3, b3, c3), ...
ON DUPLICATE KEY UPDATE
table1.data = IF(table1.version > table2.version, table1.data, table2.data),
table1.version = IF(table1.version > table2.version, table1.version, table2.version)
Sinon, quelle est la performance implication et comment puis-je l'écrire de telle sorte que je peux lot plusieurs de ces instructions INSERT..UPDATE en utilisant PreparedStatement sans encourir une pénalité de performance?