私は、高レベルの用語でレポート ロジックを記述するための DSL を提供し、結果の AST を MySQL データベースに対して実行される SQL にコンパイルするレポート ライブラリを作成しています。
出力に重複したサブクエリが含まれることがあります。CREATE TEMPORARY TABLE AS SELECT ...
同じサブクエリを複数回実行するのではなく、コンパイラにこれらの重複したサブクエリを前のステートメントにプルさせ、結果の一時テーブルを参照させることを考えています。
これが効果的な戦略である可能性が高いかどうかについて、MySQL のパフォーマンスに詳しい人はコメントできますか? の結果がSELECT
メモリに取得された後、それらの結果を一時テーブルに保存するのに大きなオーバーヘッドはありますか?
それとも、MySQL のクエリ キャッシュは、同一のサブクエリが複数回実行されるのを防ぎますか?
POSTSCRIPT:一般的に、レポートが処理するデータの量は、一時テーブルをディスクにプッシュするには不十分だと思います。それで、それらがメモリに保持できると仮定すると、一時テーブルを作成するのに大きなオーバーヘッドがありますか?