関数関係マッピング自体は行っていませんが、関数型プログラミング手法を使用して RDBMS へのアクセスを高速化しました。
データセットから開始し、複雑な計算を行い、結果を保存することは非常に一般的です。たとえば、結果は元のサブセットに追加の値を加えたものです。命令型のアプローチでは、最初のデータセットを追加の NULL 列とともに保存し、計算を行ってから、計算された値でレコードを更新する必要があります。
合理的なようです。しかし、それに関する問題は、非常に遅くなる可能性があることです。更新クエリ自体以外に別の SQL ステートメントが計算に必要な場合、またはアプリケーション コードで実行する必要がある場合は、計算後に変更するレコードを文字通り (再) 検索して、結果を正しい行に格納する必要があります。 .
結果用の新しいテーブルを作成するだけで、これを回避できます。このようにして、更新の代わりに常に挿入することができます。キーを複製して別のテーブルを作成することになりますが、NULL を格納する列でスペースを無駄にする必要はなくなります。次に、結果を最終選択に結合します。
私はこのように RDBMS を (ab) 使用し、最終的に次のような SQL ステートメントを作成しました...
create table temp_foo_1 as select ...;
create table temp_foo_2 as select ...;
...
create table foo_results as
select * from temp_foo_n inner join temp_foo_1 ... inner join temp_foo_2 ...;
これが本質的に行っていることは、一連の不変バインディングを作成することです。ただし、良い点は、セット全体を一度に作業できることです。Matlab のような行列を操作できる言語を思い出すようなものです。
これにより、並列処理もはるかに簡単になると思います。
特別な利点は、この方法で作成されたテーブルの列のタイプを指定する必要がないことです。これは、それらが選択された列から推測されるためです。