> Java > java지도 시간 > preparedstatements를 사용하여 MySQL에 여러 행을 효율적으로 삽입하려면 어떻게 해야 합니까?

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

Barbara Streisand
풀어 주다: 2024-11-26 13:44:10
원래의
875명이 탐색했습니다.

How Can I Efficiently Insert Multiple Rows into MySQL Using PreparedStatements?

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

MySQL 테이블에 행 삽입을 최적화하려면 지원되는 구문을 활용할 수 있습니다.

INSERT INTO table (col1, col2) VALUES ('val1', 'val2'), ('val1', 'val2')[, ...]
로그인 후 복사

그러나 , 동적으로 삽입할 행의 수가 많은 경우 preparedStatement를 사용하면 어렵습니다.

AddBatch와 함께 ReadyStatement 사용

PreparedStatement를 사용하여 여러 행을 동적으로 삽입하려면 addBatch() 메서드를 사용하여 일괄 처리를 생성하고 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.
            }
        }
    }
}
로그인 후 복사

이 접근 방식은 배치를 실행할 때마다 JDBC 드라이버 또는 데이터베이스 배치 길이의 제한을 고려하여 항목 1000개.

대체 방법

일괄 처리와 함께 preparedStatement를 사용할 수 없는 경우 여러 행을 삽입하는 대체 방법은 다음과 같습니다.

  • 각 행에 대해 ReadyStatement의 insert() 메서드를 사용하여 잠재적인 성능을 발휘합니다. 제한 사항.
  • 한 번에 여러 개의 SQL 문을 실행할 수 있는Statement 개체를 사용합니다.

참고 자료:

  • [ JDBC 튜토리얼 - 사용하기 ReadyStatement](https://docs.oracle.com/javase/tutorial/jdbc/basics/prepared.html)
  • [JDBC 튜토리얼 - 일괄 업데이트를 위한 명령문 객체 사용](https://docs.oracle .com/javase/tutorial/jdbc/basics/batchupdates.html)

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

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿