0

Mysql から Excel (PHP を使用) に大量のデータ (20000 行)をエクスポートしたいのですが、データは 2 つのテーブルから取得されます。最初のテーブルの各レコードには、2 番目のテーブル レコードの 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

IMHO 20k 行はそれほど大きくありません。JOINMySqlへの1回の往復で完全な結果セットを利用して取得するのはどうですか

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 に答える