信息产业培训网
[当前位置]:首页--技术专区--数据库--Sql ServerRSS订阅按钮

带你深入了解数据仓库优化中的星型转换

http://www.miiceic.org.cn   2008-7-25 9:58:00   中程在线   浏览数:
关键字:了解 数据仓库 优化 星型转换

  在数据仓库中经常查询的SQL总带有下列特征:

 

  ◆几个表进行关联

 

  ◆只有一个数据量巨大的表, 称为事实表

 

  ◆其他的都是编码表, 称为维表

 

  ◆维表和事实表之间有主外键关系

 

  假设有D1(key1),D2(key2),D3(key3),D4(key)四个小的维表和一个事实表F(key1,key2,key3,key4), 那么经常进行的查询将是:

 

  SELECT

  D1.xxx, D2.xxx, D3.xxx, D4.xxx,

  SUM(F.xxx), SUM(F.xxx)

  FROM F, D1, D2, D3, D4

  WHERE F.KEY1=D1.KEY1 AND F.KEY2=D2.KEY2

  AND F.KEY3=D3.KEY3 AND F.KEY4=D4.KEY4

  AND D1.xxx=? AND D2.xxx=?

  AND D3.xxx=? AND D4.xxx=?

  GROUP BY D1.xxx, D2.xxx, D3.xxx, D4.xxx

 

  而为了提高查询速度, 根据数据特征, key1,key2,key3,key4这四个字段会比较适合每个字段上建一个位图索引(Bitmap Index), 但是上面的查询语句并不能用到位图索引, 除非是进行了星型转换, 这个转换需要将SQL转换成下面的格式:

 

  SELECT

  D1.xxx, D2.xxx, D3.xxx, D4.xxx,

  SUM(F.xxx), SUM(F.xxx)

  FROM F, D1, D2, D3, D4

  WHERE F.KEY1=D1.KEY1 AND F.KEY2=D2.KEY2

  AND F.KEY3=D3.KEY3 AND F.KEY4=D4.KEY4

  AND D1.xxx=? AND D2.xxx=?

  AND D3.xxx=? AND D4.xxx=?

  AND F.KEY1 IN (SELECT D1.KEY1 FROM D1 WHERE D1.xxx=?)

  AND F.KEY2 IN (SELECT D2.KEY2 FROM D2 WHERE D2.xxx=?)

  AND F.KEY3 IN (SELECT D3.KEY3 FROM D3 WHERE D3.xxx=?)

  AND F.KEY4 IN (SELECT D4.KEY4 FROM D4 WHERE D4.xxx=?)

  GROUP BY D1.xxx, D2.xxx, D3.xxx, D4.xxx

 

  有条件的可以试试, 使用星型转换有三个条件:

 

  ◆事实表的每个代码列上有位图索引

 

  ◆参数STAR_TRANSFORMATION_ENABLED的值要设为TRUE

 

  ◆必须使用CBO, 所以最好对表进行适当的分析

来源:CCID
相关连接
最新评论
*以下网友发言不代表中程在线网站的观点和看法
    我要评论

    请您注意
    1、遵守中华人民共和国的各项有关法律规定
    2、承担一切因您的行为而导致的法律责任
    3、本网留言管理人员有权删除其管辖留言内容
    4、您在本网的留言本网有权在网站内转载和引用
    5、参与本留言即表明您已经阅读并接受上述条款
    我爱研发网中电华信阿里西西JAVA爱好者北京英才网全球大学查询网
    中国人的网站导航中国电脑论坛信息产业部新浪科技搜狐IT信息产业部电子教育与考试中心
    IT世界网软件项目交易网中国软件交易网国信培训网亚远景科技....[更多]
    关于我们 | 网站地图 | 周边住宿 | 行车路线 | 联系我们 | 网站律师 | 意见反馈 | 虚位以待 | 友情链接
    中程在线(北京)科技有限公司 版权所有
    总 部:北京市海淀区青东商务楼A座西四层
    企业培训部:010-52636110 52636106 就业培训部:010-68716925 68716926
    邮 件:training@miiceic.org.cn
    京ICP备06053134号
    Copyright © 2005-2008 Miiceic.org.cn All Rights Reserved