반응형
삽입 명령을 사용하여 PHP를 통해 MySQL 테이블에 대용량 데이터 세트를 전달하고 있으며, 1 마일 길이의 문자열 끝에 각 값을 추가하는 것 이외의 쿼리를 통해 한 번에 약 1000 개의 행을 삽입 할 수 있는지 궁금합니다. 그것을 실행합니다. CodeIgniter 프레임 워크를 사용하고 있으므로 해당 기능도 사용할 수 있습니다.
해결 방법
여러 행으로 하나의 INSERT
문을 어셈블하는 것이 행당 하나의 INSERT
문보다 MySQL에서 훨씬 빠릅니다.
즉, PHP에서 문자열 처리 문제가 발생하는 것처럼 들리는데, 이는 언어 문제가 아닌 알고리즘 문제입니다. 기본적으로 큰 문자열로 작업 할 때 불필요한 복사를 최소화하려고합니다. 주로 이것은 연결을 피하고자 함을 의미합니다. 한 번에 수백 개의 행을 삽입하는 것과 같이 큰 문자열을 만드는 가장 빠르고 메모리 효율적인 방법은 implode ()
함수와 배열 할당을 이용하는 것입니다.
$sql = array();
foreach( $data as $row ) {
$sql[] = '("'.mysql_real_escape_string($row['text']).'", '.$row['category_id'].')';
}
mysql_query('INSERT INTO table (text, category) VALUES '.implode(',', $sql));
이 접근 방식의 장점은 지금까지 각 연결로 조합 한 SQL 문을 복사하고 다시 복사하지 않는다는 것입니다. 대신 PHP는 implode ()
문에서이 작업을 한 번 수행합니다. 이것은 큰 승리입니다.
조합 할 열이 많고 하나 이상의 열이 매우 긴 경우 동일한 작업을 수행하는 내부 루프를 만들고 implode ()
를 사용하여 values 절을 외부에 할당 할 수 있습니다. 정렬.
참조 페이지 https://stackoverflow.com/questions/779986
반응형
'MySql' 카테고리의 다른 글
MySQL 스트림을 열지 못했습니다. 해당 파일 또는 디렉토리가 없습니다. (0) | 2020.09.28 |
---|---|
MySQL Where can I find the list of SQLException error codes for MySQL? (0) | 2020.09.28 |
MySQL SQL set values of one column equal to values of another column in the same table (0) | 2020.09.28 |
MySQL Mac OS Lion의 명령 줄에서 MySQL 서버 시작 (0) | 2020.09.28 |
MySQL Mac OS Lion의 명령 줄에서 MySQL 서버 시작 (0) | 2020.09.28 |
댓글