Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1885912
  • 博文数量: 389
  • 博客积分: 7877
  • 博客等级: 少将
  • 技术积分: 4521
  • 用 户 组: 普通用户
  • 注册时间: 2007-12-10 14:02
文章分类

全部博文(389)

文章存档

2024年(1)

2022年(1)

2021年(1)

2020年(1)

2019年(1)

2018年(3)

2017年(6)

2016年(4)

2015年(8)

2014年(15)

2013年(31)

2012年(19)

2011年(47)

2010年(33)

2009年(105)

2008年(109)

2007年(4)

分类: DB2/Informix

2013-05-21 16:58:17

【转贴】原帖地址:
http://www.db2china.net/home/space.php?uid=21801&do=blog&id=18809

数据仓库SQL编写规范:

这里只突出讲4点

1. 在where子句中,尽量避免对table column使用function
在table column上使用function,会使得相应的index和statistics无法生效。有时候function的使用不是必须的,只是由于数据的 不规范,不得不使用。比如source_code字段中既有"    ABC" 又有 "ABC",这时候你就不得不在where里使用trim(source_code)='ABC'。对于这种情况最好能修改和规范ETL,以避免使用 function。

2。尽量避免outer join
数据仓库中的查询join往往很多。join不可怕,可怕的是不必要的outer join. 很多时候查询编写人员使用outer join,不是因为必须如此,而是由于编写人员对数据的内容和逻辑关系没有深究,为保险起见,即使inner join成立也写成outer join.

3. 尽早尽可能的过滤掉大部分数据,尤其是join多个表时。
这个不言而喻。

4.如果表是建在multi-partition tablespace上,在join时不要忘记尽可能的collocated join.
这一条对于使用DB2 DPF的人很重要,但也很容易被忽视。主要是由于以下原因
  1) 查询编写人员根本没有collocated join的概念
  2) 查询编写人员根本不知道表的partition key是什么。
  3) 查询编写人员只注意从逻辑上匹配join的相关字段,而忽略了这个可能逻辑上多于但能促进collocated join的匹配条件。
阅读(841) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~