У меня есть запрос, подобный следующему, и мне было интересно, какой 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 без ущерба для производительности?