1. 問題の背景: フロント ページにはデータが表に表示され、EXCEL ファイルへのデータのエクスポートがサポートされています。 データベースのクエリは非常に遅くなる場合があります (たとえば、時間範囲が [2 年] と長く、SQL ステートメントの実行時間はほぼ 220 秒です)
一般に、エクスポートされたデータはデータベースで再クエリする必要があります。フロントデスクから取得したデータは、処理のために PHPExcel に直接渡されますか?
回答していただいた皆様、ありがとうございます。
追伸: SQL ステートメントを最適化するために最善を尽くしました (複数のテーブルと 300 万個のテーブル データに対してインデックス パーティショニングが行われました) クエリの実行時間が 1 週間あたり約 1.6 秒の場合、数分かかります。年数を確認するためです。
html テーブルは xlsx に直接エクスポートできます;
1 が使用されない場合、取得されたデータはフロントエンドがデータを表示する前にキャッシュされ、エクスポート時に別のデータベース操作を必要とせずにバックエンドに送信できます。
実はjsにはExcelを処理できるプラグインがあるのですが、やはりバックエンドからフロントエンドのデータを取得することはできませんか?
js Excel プラグイン、Baidu には Exceljs などのプラグインがたくさんあります個人的には、バックグラウンドへのデータの再取得はサポートしていません。 もちろん、上記のように HTML を Excel に直接エクスポートしてバックグラウンドで処理することもできますが、HTML でデータを表示するときにキャッシュします。 Excelをサーバーにエクスポートする場合は、キャッシュ領域から直接データを読み込んでExcelに出力します
通常、EXCEL へのデータのエクスポートはバックエンド操作です。ここで、ユーザーはデータをエクスポートするための特定の条件を選択します。バックエンドに時間がかかる場合は、非同期タスクを使用して処理できます。
データのエクスポートがすべてのデータのエクスポートを意味するかどうか知りたいです?それとも時間範囲を選択できますか?すべてをエクスポートする場合は、夜間にバックグラウンドですべてのデータを確認するなど、顧客の数が少ない時間を選択して、エクスポート時にそのタスクを取得することができます。スケジュールされたタスクも毎日定期的にデータをチェックします