浅析Join index

Teradata的join index像ORACLE的物化视图(Materialized View),基本思想就是把常用的公用的join查询物化为一个实际的表。这样的好处在查询的时候,如果优化器匹配到相应的join index,则直接通过其物理表读取数据,而不是做实际的join操作。这样的代价就是在基表做insert,update和delete的时候,需要对关联的join index进行更新。这个机制和普通的索引机制完全相同,但是更新join index比更新普通索引要复杂一些,代价也高一些。


Join index最初的想法是事先对表进行join操作,只存储基表的row id,在实际join的时候从join index中取出row id,然后从基表中获取实际需要的数据。而且join index一般只是对等值查询有效。ORACLE的bitmap join index则是在此基础上做了一些改进。对事实表进行索引,对于维表中的不同值,有对应的bitmap的索引,这种索引是等值的。索引的基本结构是(rowid,value(0 or 1))。这样实际join的时候,如果有等值条件,那么直接找到对应值的bitmap索引,如果有多个等值条件,则直接进行位图操作(与或者或等),完成之后再扫描最终的join位图,根据rowid取出事实表中相关的行即可。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值