2

私は、高レベルの用語でレポート ロジックを記述するための DSL を提供し、結果の AST を MySQL データベースに対して実行される SQL にコンパイルするレポート ライブラリを作成しています。

出力に重複したサブクエリが含まれることがあります。CREATE TEMPORARY TABLE AS SELECT ...同じサブクエリを複数回実行するのではなく、コンパイラにこれらの重複したサブクエリを前のステートメントにプルさせ、結果の一時テーブルを参照させることを考えています。

これが効果的な戦略である可能性が高いかどうかについて、MySQL のパフォーマンスに詳しい人はコメントできますか? の結果がSELECTメモリに取得された後、それらの結果を一時テーブルに保存するのに大きなオーバーヘッドはありますか?

それとも、MySQL のクエリ キャッシュは、同一のサブクエリが複数回実行されるのを防ぎますか?

POSTSCRIPT:一般的に、レポートが処理するデータの量は、一時テーブルをディスクにプッシュするには不十分だと思います。それで、それらがメモリに保持できると仮定すると、一時テーブルを作成するのに大きなオーバーヘッドがありますか?

4

1 に答える 1