複数のテーブル (10 ~ 15 個のテーブル) で ID の存在を確認するには、どのオプションが最適ですか? パフォーマンスの点で。
- 結合の使用
- テーブルごとに個別のクエリを使用する (Spring の DAO から呼び出される)。
- 使用が存在します。
複数のテーブルからの Id の存在に基づいて決定を下す必要があります。
複数のテーブル (10 ~ 15 個のテーブル) で ID の存在を確認するには、どのオプションが最適ですか? パフォーマンスの点で。
複数のテーブルからの Id の存在に基づいて決定を下す必要があります。
UNION ALL の使用:
SELECT 'table1' FROM table1 WHERE id = ?
UNION ALL
SELECT 'table2' FROM table2 WHERE id = ?
UNION ALL
SELECT 'table3' FROM table3 WHERE id = ?
別の解決策は関数を使用しています:
select function(id)
このソリューションは、データベース サーバーにアクセスします。
Oracle でのクエリ間のパフォーマンスを説明計画 (たとえば、Oracle sql 開発者を使用) で測定し、単純な Java クラスを記述して、DAO と比較して所要時間を確認できます。
exists を使用すると、Oracle は pk および fk インデックスを使用し、データベース内の 1 つのクエリですべてを実行します。これが最良の選択肢だと思いますが、それらをすべて比較すると、正確な選択肢が得られます。