>  기사  >  데이터 베이스  >  PDO(반복 삽입 또는 일괄 삽입)를 사용하여 MySQL 테이블에 여러 행을 삽입하는 데 더 효율적인 방법은 무엇입니까?

PDO(반복 삽입 또는 일괄 삽입)를 사용하여 MySQL 테이블에 여러 행을 삽입하는 데 더 효율적인 방법은 무엇입니까?

Barbara Streisand
Barbara Streisand원래의
2024-11-11 12:07:03685검색

Which Method is More Efficient for Inserting Multiple Rows into a MySQL Table with PDO: Iterative Insert or Batch Insert?

PDO MySQL을 사용하여 여러 행 삽입: 성능 및 효율성

PDO를 사용하여 MySQL 테이블에 여러 행을 삽입할 때 여러 가지 접근 방식이 있습니다. 고려하다. 이 질문은 두 가지 일반적인 방법의 상대적인 효율성과 안전성을 탐구합니다.

방법 1: foreach를 사용한 반복 삽입

$stmt = $db->prepare($sql);

foreach ($rows as $row) {
  $stmt->execute($row);
}

방법 2: foreach를 사용한 일괄 삽입 연결

$sql = "insert into `table_name` (col1, col2, col3) values ";
$sql .= //not sure the best way to concatenate all the values, use implode?
$stmt = $db->prepare($sql)->execute();

성능 고려 사항

일괄 삽입(방법 2)은 반복 삽입(방법 1)보다 일반적으로 속도가 더 빠릅니다. 데이터베이스로 전송된 쿼리의 수입니다. 그러나 대부분의 실제 시나리오에서는 성능 차이가 미미합니다.

안전성과 신뢰성

두 방법 모두 올바르게 사용하면 안전하고 신뢰할 수 있습니다. SQL 삽입 취약점을 방지하려면 준비된 문과 매개변수화된 쿼리를 사용하는 것이 중요합니다.

최상의 접근 방식

최상의 접근 방식은 애플리케이션의 특정 요구 사항에 따라 다릅니다.

  • 방법 1(반복 삽입)은 구현이 더 간단하고 중소 규모 데이터 세트에 적합합니다.
  • 방법 2(일괄 삽입)은 대규모 데이터 세트에 더 효율적이지만 더 복잡한 코드가 필요합니다.

folgenden 코드는 방법 2의 수정된 버전으로, 값 연결 및 매개변수화에 implode()를 사용하여 안전성을 향상시키는 것으로 간주합니다. :

$sql = "insert into `table_name` (col1, col2, col3) values ";

$paramArray = array();
$sqlArray = array();

foreach ($rows as $row) {
    $sqlArray[] = '(' . implode(',', array_fill(0, count($row), '?')) . ')';
    foreach ($row as $element) {
        $paramArray[] = $element;
    }
}

$sql .= implode(',', $sqlArray);

$stmt = $db->prepare($sql);
$stmt->execute($paramArray);

위 내용은 PDO(반복 삽입 또는 일괄 삽입)를 사용하여 MySQL 테이블에 여러 행을 삽입하는 데 더 효율적인 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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