下面将位图连接索引和一般的位图索引进行比较。
看以下SQL语句:
点击(此处)折叠或打开
- select s.prod_id,s.promo_id,s.channel_id
-
from sales_A s, products_A pd, promotions_A pm, channels_A ch
where s.prod_id = pd.prod_id
and s.promo_id = pm.promo_id
and s.channel_id = ch.channel_id
and pd.prod_id = 27;

然后创建位图连接索引。
创建位图索引,需要确保维度表的连结列上有唯一索引或主键,如果是复合主键,则需要将相关列都加入进来。
配置唯一性约束:
点击(此处)折叠或打开
- alter table products_A add constraint products_pk primary key(prod_id);
点击(此处)折叠或打开
- create bitmap index sales_A_bjix
-
on sales_A
( pr.prod_id, pm.promo_id, ch.channel_id )
from sales_A a, products_A pr, promotions_A pm, channels_A ch
where a.prod_id = pr.prod_id
and a.promo_id = pm.promo_id
and a.channel_id = ch.channel_id
tablespace sh
nologging;
点击(此处)折叠或打开
- column index_name format a15
-
column inner_table format a15
column inner_col format a15
column outer_table format a15
column outer_col format a15
select index_name, inner_table_name inner_table, inner_table_column inner_col,
outer_table_name outer_table, outer_table_column outer_col
from user_join_ind_columns
where index_name = 'SALES_A_BJIX';
INDEX_NAME INNER_TABLE INNER_COL OUTER_TABLE OUTER_COL
--------------- --------------- --------------- --------------- ---------------
SALES_A_BJIX SALES_A PROD_ID PRODUCTS_A PROD_ID
SALES_A_BJIX SALES_A PROMO_ID PROMOTIONS_A PROMO_ID
SALES_A_BJIX SALES_A CHANNEL_ID CHANNELS_A CHANNEL_ID

结论:位图连接索引性能更佳。
注意:当where条件中包含位图连接索引的相关列的筛选条件时(上例中是prod_id=27),才会使用位图连接索引。如果没有这一句,将走全表扫描。
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/22621861/viewspace-2083541/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/22621861/viewspace-2083541/