私はdplyr
とdbplyr
パッケージを使用してデータベースとのインターフェイスをとっています。私は何百万という記録を持つテーブルを持っています。私はまた、私がフィルタリングしたい同じテーブルのキーに対応する値のリストを持っています。通常、私はこのようなことをしてテーブルをフィルタリングします。多数の一致を含むdplyrフィルタデータベーステーブル
library(ROracle)
# connect info omitted
con <- dbConnect(...)
# df with values - my_values
con %>% tbl('MY_TABLE') %>% filter(FIELD %in% my_values$FIELD)
しかし、そのmy_values
オブジェクトは、500K以上のエントリを(それゆえ、なぜ私はここに実際のデータを提供していません)が含まれています。これは、基本的にIN
ステートメントに入れられていると、明らかに効率的ではありません(本質的にハングします)。通常、私がSQLを書いていたのであれば、一時テーブルを作成してWHERE EXISTS
節を書くでしょう。しかし、この例では、書き込み権限がありません。
このクエリをRでより効率的にするにはどうすればよいですか?
おそらく、内部結合ですか? – rsmith54