提示这个功能在BIEE日常报表中应用并不多,当然也仅能在连接的数据源是oracle的时候才可用。。。但是对于特定的需求还是很有用的。
SQL> select count(*)
2 from cndss.cn_p4p_analy_query_sumwt0
3 where yyyymmdd=to_date('20110425','yyyymmdd');
COUNT(*)
----------
3177524
SQL> CREATE INDEX cndss.idx_p4p_query_sumwt0_query ON cndss.cn_p4p_analy_query_sumwt0(keywords);
Index created.
接着在administration 物理层设置表的属性:
dashboard中很简单的一个查询界面:
再看看会话管理中的sql长啥样:
提示确实生效了!
测试发现,在这样一个数据量下,加入提示后,运行时间从原来的十几秒减少到1秒左右。
总结:在图一的hint里填写的内容是index(表名 索引名) ,这里的表名和索引名都是带schema的完整名称。记得之前有看过说如果表有别名的话,在提示中要写表的别名而不是表名,否则提示无效。。。可见物理层写的提示被BIEE只能地处理了。。。
另外提示的使用还是要遵循在oracle中的使用规则。。。只是在非常必要的时候才建议使用,而且并不是一个长期方案。
由于报表中的数据每天刷新,难免会有删除插入更新等操作,这会导致索引失效,所以定期索引重建是必要的:
alter index cndss.idx_p4p_query_sumwt0_query rebuild;