sql - Improve query performance instead of aggregrate function -
i have query want change sales_date
'01.01.2017
' 1st record product. means want every unique product stored in product_id
, check first sales_date
on product loaded , change sales_date
'01.01.2017
'.
i have used below query working hitting performance seems. there other can write same logic , improves performance?
update test_group sd set sales_date = to_date ('01.01.2017', 'dd.mm.yyyy') sales_date = ( select min(sales_date) test_group sd2 sd.product_id = sd2.product_id ) , sd.sales_date <> to_date ('01.01.2017', 'dd.mm.yyyy');
using merge statement may improve performance:
merge test_group tgt using (select product_id, rowid r_id, row_number() on (partition product_id order sales_date) rn test_group) src on (tgt.rowid = src.r_id , src.rn = 1) when matched update set sales_date = to_date('01.01.2017', 'dd.mm.yyyy') sales_date != to_date('01.01.2017', 'dd.mm.yyyy');
adding index on (product_id, sales_date) (if doesn't exist) should aid performance on both merge , original update statement.
Comments
Post a Comment