2008-03-20
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性能优化
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性能优化
- 浏览: 83985 次
- 性别:

- 来自: wuhan

- 详细资料
搜索本博客
我的相册
5join
共 40 张
共 40 张
最近加入圈子
最新评论
-
BIRT (一) 安装BIRT
一个report也叫商业智能,汗
-- by julycn -
BIRT (一) 安装BIRT
请问,能否有时间具体讲解一下pentaho的使用方法呢?非常感谢!
-- by xuxiangtour -
BIRT (一) 安装BIRT
一直再等该你的下一篇 :)
-- by xuxiangtour -
商业智能平台研究(九) ...
这篇写得不错,只是ETL 中的MetaData涉及太多的方方面面,很难用一个标准 ...
-- by finalarrow -
关于Daily Build的ant 脚 ...
build时 想要的是自动生存的一天或周期svn commit的log信息,为了 ...
-- by flsyaoair






评论排行榜