2012-04-04 86 views
1

我試圖設置一個while循環,它使用Java中的jdbc驅動程序將多行插入到MySQL表中。這個想法是,我最終的線沿線的一個聲明:將多個PreparedStatements合併到一起

INSERT INTO table (column1, column2) VALUES (column1, column2), (column1, column2); 

我想建立使用java.sql.PreparedStatement這種說法,但我想在準備語句的小塊,一排時間 - 主要是因爲條目數量是動態的,這似乎是創建一個大型查詢的最佳方式。

這需要每次生成另一個塊時將小部件'合併'在一起。我如何將它們合併在一起?或者你會建議忘記這個想法,並且一次只執行數千個INSERT聲明?

謝謝 帕特里克

+1

您想要使用批量更新。有關示例,請參閱[這裏](http://www.tutorialspoint.com/jdbc/jdbc-batch-processing.htm)。 – 2012-04-04 19:55:07

回答

1

它的類型取決於您計劃運行此循環以執行數千條語句的頻率,但這是準備好的語句和存儲過程的確切目的之一 - 因爲不必在每次執行時重新編譯查詢,所以您會得到當通過si進行循環查詢時可能會獲得巨大的性能提升多執行SQL語句,必須在每次循環迭代時編譯和執行。

這些增益可能仍然不符合您所要求的循環中長整型插入的預處理語句的性能,但代碼更簡單。除非性能變得有問題,否則我會建議保持執行循環。

+0

夠公平的,我很擔心它可能會影響速度方面的表現,但這使事情變得清晰。感謝您的回答。 – Patrickdev 2012-04-04 19:56:53

1

更好地準備一個PreparedStatement和重新使用它,只要你想盡可能多:

INSERT INTO(表)(列1,列2)VALUES(列1,列2)

+0

謝謝你的回覆。 – Patrickdev 2012-04-04 20:11:13