【转贴】原帖地址:
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的匹配条件。
阅读(951) | 评论(0) | 转发(0) |