以下に2つのテーブルがあります
DEVICES
--------------------
DEVICE_ID MODEL_ID
1 A
2 B
3 C
4 D
CHANGE_VALUES
----------------------------------------
D_ID CHANGE_MODEL_ID
1 E
4 F
ここで、テーブルにリストされているすべての値についてMODEL_ID
、テーブル内の値を更新したいと思います。DEVICES
DEVICE_ID
D_ID
CHANGE_VALUES
目的を達成するために使用したSQLクエリを以下に示します。DEVICE_ID
ただし、のすべての値に対して2つのサブクエリを実行する必要があるため、これは適切なソリューションではないようです。〜3k行を含むCHANGE_VALUESでこれを実行すると、34秒かかりました。これは長いようです。
UPDATE devices dev
SET dev.model_id =
(SELECT c_value.change_model_id
FROM change_values c_value
WHERE dev.device_id = c_value.d_id
)
WHERE 1 IN
(SELECT COUNT(*)
FROM change_values c_value
WHERE dev.device_id = c_value.d_id
);
私はSQLを初めて使用するので、同じことを実行できる既存の方法があるかどうかはわかりません。だから私はもっと良い解決策があるかどうか知りたいです。
注:私はOracle10gを使用しています