赞
踩
关于lookup和join的区别,不同工具有类似的方式和原理,但功能特点各有不同。
首先lookup典型的1对N关联,而join可以N对M。此外lookup一般是左外连接(假设主表在左的设计思路),join则可以分开指定内或左外或者右外或者全外连接。lookup通常可以全部或部分缓冲进入内存,join则不一定,不同工具的做法差别挺大。lookup其实不少工具并不需要sort,因为是通过lookup key类似hash索引来定位,而join则分merge join和hash join,merge sort做数据仓库的时候很吃亏的,因为数据需要先排序才能join,以数据仓库的大数据这么join几次后就开销很大了,通常etl工具本身所实现的方式都是sort merge。hash join那就不需要将数据排序后关联,而现在最新的oracle,db2,teradata都有hash join的方式来提高性能,sql 2005好像也有了,iq就不是很清楚,其他的就更不清楚了。实际项目中,工具中的join未必比数据库快,还是要具体项目看,当然工具的好处是可以join异构数据源。但是往往etl工具作lookup比在db里面join效率要高。
讲到这里就可以清楚了,工具很多时候都在推荐lookup。在偶做过的项目中,N对M的关联其实并不多,基本上都可以用lookup来实现。lookup的一些差别就是体现在lookup实现的复杂程度、性能和维护工作量。这块的技巧性也比较强。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。