У меня есть запрос, подобный следующему, и мне было интересно, какой тип SQL создается путем пакетирования PreparedStatement.
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)
Вопрос в том, разрешит ли он это как копию всей этой строки sql для каждой строки в пакете или сделает что-то вроде:
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)
Если нет, как это влияет на производительность и как мне написать его таким образом, чтобы я мог выполнять пакетную обработку многих из этих операторов INSERT..UPDATE с помощью PreparedStatement без потери производительности?