生产环境Oracle中sql优化案例1(关于update与merge)
1.案例简介与需求
这是一个关于update和merge更新的sql优化案例,由于生产里面的数据不能随便拿出来,所以我自己造了一些数据。这次的优化只涉及到了一张表,所以需求以及逻辑相对来说较为简单。
需求如下:
- 一张表里面的数据大概是50万级别的数据量
- 需要根据这张表的几个字段进行分组求另外一个字段的平均值
- 不新建临时表,就在这张表上进行更新
- 里面还涉及到日期的限定条件
能提炼出来的就这么多了,具体看下面的代码
2.先造好表和数据
这些数据是通过随机数造出来的,用来模拟生产的数据
create table MONEY
(
as_of_date DATE,
id1 NUMBER,
id2 NUMBER,
id3 NUMBER,
id4 NUMBER,
id5 NUMBER,
money NUMBER
);
truncate table money;
insert into money
select to_date(round(dbms_random.value(20201001, 20201010)), 'YYYYMMDD') as_of_date,
round(dbms_random.value(1, 2)) id1,
round(dbms_random.value