>데이터 베이스 >MySQL 튜토리얼 >Java의 ReadyStatement를 사용하여 MySQL에 여러 행을 효율적으로 삽입하려면 어떻게 해야 합니까?

Java의 ReadyStatement를 사용하여 MySQL에 여러 행을 효율적으로 삽입하려면 어떻게 해야 합니까?

Linda Hamilton
Linda Hamilton원래의
2024-12-20 15:31:09430검색

How Can I Efficiently Insert Multiple Rows into MySQL Using Java's PreparedStatement?

PreparedStatement를 사용하여 preparedStatement를 사용하여 MySQL에 여러 행 삽입

Java에서는 ReadyStatement의 배치를 사용하여 MySQL 테이블에 여러 행을 효율적으로 삽입할 수 있습니다. 처리 능력. 이전에는 각 행에 대해 개별 SQL 문을 실행하는 것이 일반적이었습니다.

for (String element : array) {
    myStatement.setString(1, element[0]);
    myStatement.setString(2, element[1]);

    myStatement.executeUpdate();
}

그러나 성능을 최적화하기 위해 MySQL은 한 번에 여러 행을 삽입할 수 있는 구문을 제공합니다.

INSERT INTO table (col1, col2) VALUES ('val1', 'val2'), ('val1', 'val2')[, ...]

preparedStatement에서 이 접근 방식을 활용하려면 일괄 처리가 필요합니다.

  1. ReadyStatement: SQL 문을 준비하고 각 행에 대한 매개변수를 설정합니다. addBatch()를 사용하여 각 명령문을 배치에 추가합니다.
  2. 배치 실행: 모든 행이 추가되면 ExecuteBatch()를 호출하여 전체 배치를 실행합니다. 이 메소드는 각 명령문의 영향을 받는 행 수를 나타내는 업데이트 수 배열을 반환합니다.

다음은 프로세스를 보여주는 예입니다.

public void save(List<Entity> entities) throws SQLException {
    try (
        Connection connection = database.getConnection();
        PreparedStatement statement = connection.prepareStatement(SQL_INSERT);
    ) {
        int i = 0;

        for (Entity entity : entities) {
            statement.setString(1, entity.getSomeProperty());
            // ...

            statement.addBatch();
            i++;

            if (i % 1000 == 0 || i == entities.size()) {
                statement.executeBatch(); // Execute every 1000 items.
            }
        }
    }
}

1000개 행마다 배치 실행 JDBC 드라이버 또는 데이터베이스가 배치 크기에 부과하는 잠재적인 제한을 피하는 데 도움이 됩니다.

자세한 내용은 JDBC 튜토리얼을 참조하세요. 일괄 업데이트를 위한 preparedStatement 및 명령문 개체 사용에 대한 자세한 내용입니다.

위 내용은 Java의 ReadyStatement를 사용하여 MySQL에 여러 행을 효율적으로 삽입하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.