В Java, как PreparedStatement работает для следующего запроса

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

1
задан Mohamed Nuur 14 September 2010 в 01:54
поделиться