SSAS 工作笔记(4)------数据库性能优化

  --事实表dim_BasicProbe->维度dim_System->维度dim_SystemType 呈雪花型关联,但事实表dim_BasicProbe仍然与维度dim_SystemType直接关联,因为如果不直接关联要查某个系统类型的BasicProbe数据时,必须先查询出System,从而查询出BasicProbe,性能有所损耗。所以雪花型关联慎用。

  --数据仓库(sql server)中表之间没有外键关联,到设计ssas时才在数据源视图中设计外键关联,即在程序逻辑中控制。不管是不是BI,只要是大数据量的应用程序,都不会在存储方(如sqlserver)建立外键关联,因为如果在存储方设置外键,当数据量达到上百上千万时,性能相当低。

  ---- 问题描述:为什么在一个事实表中,已经有os字段(非外键关联)用于描述操作系统,又要有osId字段(外键关联os维 度)?

         答案:一般如果单单在SQL DB数据库里面查数据的,是尽量不要用关联查询的,关联查询太慢,如果在cube里面那倒没什么问。即是说os字段用于直接在SQL DB数据库里面查询数据库,为了提高性能直接放在事实表中,免去关联查询。而osId用于在cube中进行关联,体现多维。所以既要有os字段也要有osid字段。在接触的项目中,这种做法相当普遍。


优化小点:

  • --数据存储时可以考虑适当的数据冗余,以减少数据库表之间的链接操作,提高查询效率。
  • --不要在一句sql里再三地使用相同的函数,浪费资源,将函数结果放在变量里以便重复调用。
  • --将量少的数据考虑放在程序中的常量或者xml文件中。
  • --select的时候只返回需要的字段,而不是select *。
posted @ 2011-08-09 17:39  苏先森1989  阅读(677)  评论(0编辑  收藏  举报