我有查询,我想将SALES_DATE
更改为' 01.01.2017
'为产品的第一个记录。这意味着我希望获取存储在PRODUCT_ID
中的每个独特产品,并检查加载产品的第一个SALES_DATE
,并将此SALES_DATE
更改为' {{1} }'
我已经使用了下面的查询,但它的效果似乎正在发挥作用。那么还有其他任何我可以编写相同的逻辑并提高性能吗?
01.01.2017
答案 0 :(得分:1)
使用MERGE语句可以提高您的表现:
MERGE INTO test_group tgt
USING (SELECT product_id,
ROWID r_id,
row_number() over (partition by product_id ORDER BY sales_date) rn
FROM test_group) src
ON (tgt.rowid = src.r_id AND src.rn = 1)
WHEN MATCHED THEN
UPDATE SET sales_date = to_date('01.01.2017', 'dd.mm.yyyy')
WHERE sales_date != to_date('01.01.2017', 'dd.mm.yyyy');
在(product_id,sales_date)上添加索引(如果它还不存在)也应该有助于合并和原始更新语句的性能。