1 つのテーブルがはるかに小さい場合、プログラムでテーブルを結合するか、SQL Join ステートメントを使用する方が高速ですか?
より具体的にhashmap<int, string>
は、小さいテーブルから文字列を取得し、その値を大きいテーブルから返されたオブジェクトに設定することは、データベース上のテーブルを事前に結合することと比べてどうですか? 2 つのテーブルの相対的なサイズに違いはありますか?
更新:私の質問を言い換えます。大きなテーブルのサブセット(気になる 5,000 から 20,000 レコード) を取得し、小さなテーブル (ローカルにキャッシュする) をプログラムで結合すると、SQL 結合が実行されますか? SQL 結合はテーブル全体に適用されますか、それとも返される大きなテーブルのサブセットのみに適用されますか?
SQL 結合ステートメント:
SELECT id, description
FROM values v, descriptions d
WHERE v.descID=d.descID
AND v.something = thingICareAbout;
個々の声明:
SELECT id, descID
FROM values
WHERE v.something = thingICareAbout;
SELECT descID, description
FROM descriptions d;
プログラムによる参加:
for (value : values){
value.setDescription(descriptions.get(value.getDescID))
}
追加情報:大きいテーブルには、小さいテーブルの 3,000 の値に対応する合計 800,000,000 レコードがあります。ほとんどの検索では、5,000 ~ 20,000 件の結果が返されます。これはオラクル DB です。