PHP PDO MySQL에 여러 행을 삽입하는 데 어떤 접근 방식이 더 좋습니까?

Susan Sarandon
풀어 주다: 2024-11-13 11:16:02
원래의
940명이 탐색했습니다.

Which Approach is Better for Inserting Multiple Rows in PHP PDO MySQL?

PHP PDO MySQL에 여러 행 삽입: 코드 비교 및 ​​최적화

다음을 사용하여 MySQL 테이블에 여러 행을 삽입해야 하는 경우 PHP PDO, 개발자는 두 가지 기본 접근 방식을 접할 수 있습니다.

접근 방법 1:

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

foreach($rows as $row){
  $stmt->execute($row);
}
로그인 후 복사

접근 방법 2:

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

코드 성능 및 안전성:

두 접근 방식 모두 실행 가능하지만 실행 속도와 보안 측면에서 다릅니다.

접근 방법 1:

  • 장점: 구현이 간단하고 쉽습니다.
  • 단점: 각 행에 대해 별도의 실행으로 인해 대규모 데이터세트의 경우 속도가 느려질 수 있습니다. .

접근 방식 2:

  • 장점: 일괄 삽입을 수행하므로 대규모 데이터 세트의 경우 접근 방식 1보다 빠릅니다.
  • 단점: 값을 주의 깊게 연결해야 하므로 SQL 주입 공격의 위험이 증가합니다(예방하려면 매개변수화된 쿼리를 사용하세요).

최선의 접근 방식:

최적의 접근 방식은 삽입되는 데이터 세트의 크기에 따라 다릅니다. 소규모 데이터 세트의 경우 두 방법 중 하나가 적합합니다. 속도가 중요한 대규모 데이터 세트의 경우 매개변수화된 쿼리를 사용하는 접근법 2를 권장합니다.

추가 최적화:

접근법 2의 일괄 삽입은 쿼리 실행 전 자리 표시자:

$sqlArray = array();
foreach($rows as $row){
    $sqlArray[] = '(' . implode(',', array_fill(0, count($row), '?')) . ')';
}
$sql .= implode(',', $sqlArray);
로그인 후 복사

이렇게 하면 실행 전에 바인딩해야 하는 자리 표시자의 수가 크게 줄어들어 성능이 향상됩니다.

위 내용은 PHP PDO MySQL에 여러 행을 삽입하는 데 어떤 접근 방식이 더 좋습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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