좋아, 그래서 사람들이 시리즈에서 선택하여 우편 주소 데이터베이스를 쿼리 할 수있는 웹 시스템 (codeigniter & mysql에서 빌드 됨)을 얻었습니다. 그들이 원하는 선택, 꽤 표준적인 물건에 도착할 때까지 형태의. 그런 다음 해당 정보를 구매하고 해당 시스템을 통해 다운로드 할 수 있습니다.mysql 데이터베이스 쿼리에서 PHP를 사용할 때 CSV 내보내기 속도 향상
쿼리가 매우 빠르게 실행되지만 데이터베이스에 해당 쿼리를 적용하고이를 csv로 내보내는 경우 데이터 세트가 30,000 레코드 마크 (각 행의 약 40 개 열 중 약 20 개가 모두 셀 당 평균 20 자의 데이터로 채워짐) csv로 내보내려면 5 분 정도 걸릴 수 있습니다.
그래서 제 질문은 느려지는 주된 원인은 무엇입니까? 쿼리의 데이터 결과가 너무 커서 메모리 문제가 발생합니까? 따라서 프로세스에 더 많은 메모리를 허용해야합니까? 또는, 내가하지 않는 mysql 쿼리에서 csv로 내보내는 훨씬 효율적인 방법이 있습니까? 쿼리의 내용을 임시 테이블에 저장하고 임시 테이블을 CSV로 내보내는 것이 좋습니까? 아니면이 모든 잘못을 저질렀습니까? 또한, 그것이 내가 결과 집합을 저장하는 방식으로 인해이 금지에 대한 Codeigniters 액티브 레코드를 사용하고 있다는 사실입니까?
의사 코드 :
$query = $this->db->select('field1, field2, field3')->where_in('field1',$values_array)->get('tablename');
$data = $this->dbutil->csv_from_result($download_query, $delimiter, $newline); // the some code to save the file
$this->load->helper('download');
force_download($filename, $filedata);
어떤 조언을 환영합니다! 읽어 주셔서 감사합니다!
수출 프로세스의 프로그램 흐름에 대한 의사 코드 예제를 제공해 주시겠습니까? – CrazyWebDeveloper
물론 가능합니다! 기본적으로 다음과 같습니다. $ query = $ this-> db-> select ('field1, field2, field3') -> where_in ('field1', $ values_array) -> get ('tablename'); $ data = $ this-> dbutil-> csv_from_result ($ download_query, $ delimiter, $ newline); // 파일을 저장하는 코드 $ this-> load-> helper ('download'); force_download ($ filename, $ filedata); 제대로 스타일을 지정할 수있는 코드가 없습니다. 죄송합니다! – John
@ John은 코드를 원래 게시물에 넣었습니다. – manuerumx