网站首页  |   业界社区  |  电信社区  |  技术社区   |  极客社区  |  游戏社区  |  生活社区   |   科技博客  |   同事录
TechWeb-技术社区


标题: [推荐] 深入了解数据仓库优化中的星型转换
沙漠之狐
TW金牌会员
Rank: 6Rank: 6



UID 81206
精华 12
积分 1051
帖子 612
阅读权限 70
注册 2006-8-21
状态 离线
发表于 2008-7-28 12:15 资料 短消息 加为好友
深入了解数据仓库优化中的星型转换

在数据仓库中经常查询的SQL总带有下列特征:
5S.m*z'd q&D1K程序开发,操作系统,服务器,源码下载,Linux,Unix,BSD,PHP,Apach,asp,下载,源码,黑客,安全,技术社区,技术论坛程序开发,操作系统,服务器,源码下载,Linux,Unix,BSD,PHP,Apach,asp,下载,源码,黑客,安全,技术社区,技术论坛5L$[5k"n2_
        ◆几个表进行关联+J#b)y;[4M3G$R2b0~
1r%w0U'a;|6Y"f*W
        ◆只有一个数据量巨大的表, 称为事实表!S)S%g,L5Z*q0@

$q _&b5h)r#w+i        ◆其他的都是编码表, 称为维表
!y:W3k$S)l0M$S8A7a/k#y$\.]8F:e
        ◆维表和事实表之间有主外键关系
6|"Z%Q:z"v-A'Otech.techweb.com.cntech.techweb.com.cn3s*f%b*T7L+[&T5_
        假设有D1(key1),D2(key2),D3(key3),D4(key)四个小的维表和一个事实表F(key1,key2,key3,key4), 那么经常进行的查询将是:           SELECTtech.techweb.com.cn*[.X/p9H*l5X"T0l3b
          D1.xxx, D2.xxx, D3.xxx, D4.xxx,
#I.R6Z9H:v tTechWeb-技术社区          SUM(F.xxx), SUM(F.xxx)
-y-|#N.a5_'y2FTechWeb-技术社区          FROM F, D1, D2, D3, D4TechWeb-技术社区.~0L,b+w2D6i
        WHERE F.KEY1=D1.KEY1 AND F.KEY2=D2.KEY2程序开发,操作系统,服务器,源码下载,Linux,Unix,BSD,PHP,Apach,asp,下载,源码,黑客,安全,技术社区,技术论坛)g6l:o%i A'}'U!k
          AND F.KEY3=D3.KEY3 AND F.KEY4=D4.KEY4
6T/v(o:n;x#\"a,P程序开发,操作系统,服务器,源码下载,Linux,Unix,BSD,PHP,Apach,asp,下载,源码,黑客,安全,技术社区,技术论坛          AND D1.xxx=? AND D2.xxx=?
$Q0v Z9f-k$|tech.techweb.com.cn          AND D3.xxx=? AND D4.xxx=?TechWeb-技术社区%l6O0S'\5n&J-R
        GROUP BY D1.xxx, D2.xxx, D3.xxx, D4.xxx
+])k(|+F-Y.\!T
9M&E;t6p/d0k$L9itech.techweb.com.cn:h/R-~+J1R.C6]/\
        而为了提高查询速度, 根据数据特征, key1,key2,key3,key4这四个字段会比较,每个字段上建一个位图索引(Bitmap Index), 但是上面的查询语句并不能用到位图索引, 除非是进行了星型转换, 这个转换需要将SQL转换成下面的格式:          SELECT
5]-z5D+n2?"X'r7D7b:Ttech.techweb.com.cn          D1.xxx, D2.xxx, D3.xxx, D4.xxx,
6v"O"B&d8m%{"J!j)w/Q8g&b3B          SUM(F.xxx), SUM(F.xxx)
*V,P'U,`;V"J%]          FROM F, D1, D2, D3, D4
!@4R4z,z;_ H2^/y        WHERE F.KEY1=D1.KEY1 AND F.KEY2=D2.KEY2程序开发,操作系统,服务器,源码下载,Linux,Unix,BSD,PHP,Apach,asp,下载,源码,黑客,安全,技术社区,技术论坛$b;[8A8T2[!p6k:@
          AND F.KEY3=D3.KEY3 AND F.KEY4=D4.KEY4
)c(G6s;N t3|7N9O          AND D1.xxx=? AND D2.xxx=?
:d(h#_1h*R8@6z          AND D3.xxx=? AND D4.xxx=?
1o6v.u-~/`8W+V"a(h          AND F.KEY1 IN (SELECT D1.KEY1 FROM D1 WHERE D1.xxx=?)
7~+N%A _3c5D          AND F.KEY2 IN (SELECT D2.KEY2 FROM D2 WHERE D2.xxx=?)(}7v*@/L3W*C,{
          AND F.KEY3 IN (SELECT D3.KEY3 FROM D3 WHERE D3.xxx=?)
!I,l+~1~*@1t)}#`(`tech.techweb.com.cn          AND F.KEY4 IN (SELECT D4.KEY4 FROM D4 WHERE D4.xxx=?) GROUP BY D1.xxx, D2.xxx, D3.xxx, D4.xxx 'I0m/L6O/T'T*j:k"t2`"S
TechWeb-技术社区1P7p:e.n#D6f0]8u!U
TechWeb-技术社区!h+Z1z/h#W"G(t k
        有条件的可以试试, 使用星型转换有三个条件:
+X)z;t*E1U#K8{([程序开发,操作系统,服务器,源码下载,Linux,Unix,BSD,PHP,Apach,asp,下载,源码,黑客,安全,技术社区,技术论坛2_;|8Z-b:{:{6h
        ◆事实表的每个代码列上有位图索引
2g&T4X2o$eTechWeb-技术社区
)b:z1`5c$u.{$@8k程序开发,操作系统,服务器,源码下载,Linux,Unix,BSD,PHP,Apach,asp,下载,源码,黑客,安全,技术社区,技术论坛        ◆参数STAR_TRANSFORMATION_ENABLED的值要设为TRUE
(s&~!N+c8Q-ftech.techweb.com.cn
"~6|9M1?0\8C5m-X0y8~!Y v        ◆必须使用CBO, 所以最好对表进行适当的分析

引用 回复 顶部
查看积分策略说明快速回复主题
选项 标题 Smilies
禁用 URL 识别
禁用 Smilies
禁用 Discuz!代码
使用匿名发帖
使用个人签名
接收新回复邮件通知
内容





当前时区 GMT+8, 现在时间是 2008-12-3 07:30
京ICP证060517号

本论坛支付平台由支付宝提供
携手打造安全诚信的交易社区 Powered by Discuz! 5.5.0 © 2001-2008 Comsenz Inc.
Processed in 0.020879 second(s), 8 queries

清除 Cookies - 联系我们 - TechWeb.com.cn - Archiver - WAP