我想将大量数据(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屏幕变成空白(白色)......我认为这是执行超时问题...
任何解决方案??
最佳答案
恕我直言,两万行不是很大。如何利用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