作者·2012-10-22 03:42
·

数据仓库SQL编写规范

字数 771阅读 3974评论 6赞 0
数据仓库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的匹配条件。

如果觉得我的文章对您有用,请点赞。您的支持将鼓励我继续创作!

0

添加新评论6 条评论

frogboyfrogboy数据库管理员IBM
2013-03-07 11:22
dpf Data Partitioning Feature (数据库分区特性) 指的就是db2的分区数据库技术  个人浅见
shiv_zhushiv_zhu开发工程师CM tech
2013-01-11 21:17
新手,请教dpf是什么意思?
taylor840326taylor840326数据库管理员中国百盛集团
2013-01-10 15:43
谢谢分享。
wangqh_2008wangqh_2008数据库管理员科迈
2013-01-08 14:51
谢谢分享。

2012-10-28 10:30
redspr: 不错的总结,DPF的collocated join是设计partition key就要考虑的,开发人员有办法选择吗
开发人员无法选择如何设计,但是可以选择尽量使用。只要查询逻辑允许,即使看似多余,也应尽量将partition key作为匹配条件。

例如: 有A和B两个表都是以account_id为partition key, 同时我们也知道当A.item_id=B.item_id时A.account_id一定也等于B.account_id 那么下面两个查询,2)的运行效率要高于1) 因为当2)的时候db2 optimizer知道join的数据是collocated.

1)  select A.col1, B.col2
        from A inner join B
        on (A.item_id=B.item_id)
2)  select A.col1, B.col2
        from A inner join B
        on (A.item_id=B.item_id and A.account_id=B.account_id)
redsprredspr数据库管理员北京普远天成科技有限公司
2012-10-27 11:48
不错的总结,DPF的collocated join是设计partition key就要考虑的,开发人员有办法选择吗
Ctrl+Enter 发表

作者其他文章

X社区推广