将大量数据(20000行)从Mysql导出到excel(使用Php)

将大量数据(20000行)从Mysql导出到excel(使用Php),php,mysql,excel,import,Php,Mysql,Excel,Import,我想将大量数据(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 * F

我想将大量数据(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屏幕变成空白(白色)。。。。。。我认为这是执行超时的问题


有什么解决方案吗?

我认为2万行并没有那么大。如何利用
JOIN
在往返MySql的过程中获得完整的结果集

选择t1.*,t2*
从表1 t1连接到表2 t2
在t1.store\u id=t2.store\u id上
优化查询的select部分,以便只返回真正需要的列

您的问题并不清楚,但如果您只需要导出稍后可以在Excel中打开的数据,而不需要构建一个奇特的报告,那么您可以使用
到OUTFILE
子句快速生成CSV文件

选择t1.*,t2*
输入输出文件“/tmp/tablename.csv”
字段以“,”结尾,也可以用“,”括起
以“\n”结尾的行
从表1 t1连接到表2 t2
在t1.store\u id=t2.store\u id上

mysql\u*
functions)扩展是。我建议使用(
mysqli\u*
functions)或替代。检查时间是否不重要。另外,可能是浏览器问题。添加一些日志信息以了解是否有问题:ìf($I%1000=0)echo“line%I";\'. 我建议您在CLI中执行代码。您真的需要使用PHPExcel吗?也许你可以将其导出到单独的csv文件中,然后使用它们?@peterm的回答将大大提高速度。。。检索所有数据的单个数据库查询将比针对数据库逐行检索数据的20001检索查询快得多