次の問題がありLIST
ます: 5 列のテーブルがあります:
- リスト項目
- 製品番号
- 参照番号
- 部品番号
- 量
- 州
100 000 rows
この表のあたりにあります。テーブルもpart
ありhistory
、すべてpart_number
列があります。
update LIST.state column with value 1, 2 or 3 where LIST.refNo = some value
次の状況の結果に応じて、次のことが必要になります。
If LIST.part_number does not exist in table part.part_number
set LIST.state to 1.
If it does, if this part_number and corresponding date in history is less than a week,
set LIST.State to 2. Else set it to 3.
を使用してpostgreSQL
います。どんな助けでも大歓迎です。これまでのところ、次の簡単なIF ELSE
ステートメントの使用方法を知っています。
DO
$BODY$
BEGIN
IF EXISTS (SELECT part_number FROM part WHERE refNo=7000) THEN
ELSE
UPDATE LIST set state = 1
END IF;
END;
$BODY$
これは最善のアプローチではないと思います。これを if ループで囲む必要があり、 があるためover 200 000 rows in history table
、1つずつ比較すると非常に遅くなります。
最初にパーツ テーブルに存在する値を選択し、クエリを実行して履歴から値を取得できますか?