0

我想大量数据(20000 行)从 Mysql 导出到 excel(使用 PHP)数据来自两个表。第一个表的每条记录都有第二个表记录的ID。我正在使用PHPExcel库。

伪代码:

$first_table = mysql_query("SELECT * FROM table_1")

foreach($first_table as $row){

   $store_id = $row['store_id'];

   $second_table =  mysql_query("SELECT * FROM table_2 Where ID = $store_id");

}

在这种情况下,mysql查询运行次数(在第一个表中找到记录)现在的问题是处理时间太长,最后没有结果php屏幕变为空白(白色)......我认为这是执行超时问题...

有什么解决办法??

4

1 回答 1

2

恕我直言,20k 行并不是那么大。如何JOIN在一次往返 MySql 中使用并获得完整的结果集

SELECT t1.*, t2.*
  FROM table1 t1 JOIN table2 t2
    ON t1.store_id = t2.store_id

优化查询的选择部分,以便只返回真正需要的列。

从您的问题中不清楚,但是如果您只需要导出可以稍后在 Excel 中打开的数据而不是构建精美的报告,那么您可以使用INTO OUTFILE子句非常快速地生成 CSV 文件

SELECT t1.*, t2.*
  INTO OUTFILE '/tmp/tablename.csv'
       FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"'
       LINES TERMINATED BY '\n'
  FROM table1 t1 JOIN table2 t2
    ON t1.store_id = t2.store_id
于 2013-05-16T06:34:31.000 回答