0

私は2つの問題セットを持っています。私が探しているのは、両方を組み合わせたソリューションです。

問題 1: たとえば 20 行のテーブルがあります。他のテーブル (テーブル 2 など) から 150,000 行を読み取っています。テーブル 2 から読み取った各行について、テーブル 1 の特定の行と一致させる必要があります (行全体と一致するのではなく、いくつかの列と一致しません。たとえば、table2.col1 = table1.col && table2.col2 = table1.col2) などテーブル1をキャッシュして、何度もクエリを実行する必要がないようにする方法はありますか?

問題 2: クエリ文字列を動的に生成したい。つまり、パラメーター 2 が null の場合、それを where 句に入れない。残っている唯一のオプションは、非常に遅くなる即時実行を使用することです。

今、テーブル1と比較する動的クエリをどのように使用できるかを尋ねていますか? 何か案は ?

4

2 に答える 2

0

問題 1 では、テーブルを結合するだけです。等結合があり、一方のテーブルが非常に小さく、もう一方のテーブルが大きい場合、ハッシュ結合が発生する可能性があります。これは事実上のキャッシング メカニズムであり、テーブルの読み取りと結合の実行の合計コストは、テーブルの読み取りよりもわずかに高くなります (ハッシュ テーブルがメモリに収まる限り)。

クエリが構築され、即時実行によって実行される場合、違いはありません。RDBMS ハッシュ結合は有効なキャッシュとして引き続き機能します。

于 2013-06-27T20:58:50.193 に答える