私はRユーザーですが、大きなデータセット(数千万行)をサブセット化する必要がある関数を作成する必要があることがよくあります。このような関数を多数の観測に適用する場合、実装方法に注意しないと非常に時間がかかる可能性があります。
これを行うために、data.tableパッケージを使用することがあります。これにより、データフレームを使用したサブセット化よりもはるかに高速になります。最近、私はRMySQLのようなパッケージの実験を開始し、いくつかのテーブルをmysqlにプッシュし、そのパッケージを使用してsqlクエリを実行して結果を返しました。
パフォーマンスの改善が混在していることがわかりました。小さいデータセット(数百万)の場合、データをdata.tableにロードし、適切なキーを設定すると、サブセット化が高速になるようです。より大きなデータセット(数千から数億)の場合、mysqlへのクエリの送信はより速く移動するように見えます。
どの手法が単純なサブセット化または集計クエリをより速く返す必要があるか、そしてこれがデータのサイズに依存するかどうかについて誰かが洞察を持っているかどうか疑問に思っていましたか?data.tableにキーを設定することは、インデックスを作成することにいくぶん似ていることを理解していますが、それ以上の直感はありません。