ETL性能优化

现有orders 表和 orderdetails 表表示订单和订单的详细情况, 字段如下:

orders : orderid (pk) , orderdate (date) , customernumber (number)

orderdetails : orderid (pk) , orderdetailsid (pk) , price , quantity , product_id

现在数据库要更新orders 表的数据,级联的就会更新orderdetails 表的数据, 然后我们刷新数据仓库乙的事实表orderdetails , 一开始的执行思路可能是这样的:

step1: 从orders 表读某个条件的数据,我们比方说orderdate 大于2008年4月,然后我们只要orderid ,sql 象下面这个样子

select orderid from orders where orderdate < 2008年四月.

step2: 把orderid 当成参数传给orderdetails ,然后读取所有符合orders表里面orderid 的orderdetails 记录:

select * from orderdetails where orderid = ? ( 这个?的参数是由前面一个步骤来的)(这个读取的过程是大量循环的读取)

step3: 然后把这些orderdetails 记录怎么样到数据仓库乙……..

*************

step1:

select orderdetails.orderid , orderdetailsid , price , quantity , product_id

from orders , orderdetails

where orders.orderid = orderdetails.orderid

and orders.orderdate < 2008年四月

step2: 更新数据仓库乙中的对应数据.

两个ETL设计的结果相同,性能天壤之别

查看完整版: ETL性能优化

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值