DB2数据库。营销活动需要对推荐人计算积分。为了保证数据的实时性所以采用了视图的形式,视图select语句中通过case when计算了积分,还有union all。由于数据量太大查询效率比较慢
1.给视图建索引报错,好像是不能给视图建立索引。
2.由于用了csas when倒是视图也不走基表的索引
3.由于有union all 所以物化表也不能自动更新,基表插入了新的数据后需要手动刷新物化表才会同步数据
请教如何加快视图的查询速度
记得在oracle里面有一种物化视图可以有实体表的效果,不知道db2里面有没有
笨方法就是做成实体表,用触发器维护呗
对推荐人计算积分,那么where条件应该是推荐人id,索引也应该是这个id,因此用于计算积分的case when字段与索引没有关系 ,积分字段是不应该有索引的;
有union all的话,建议拆开两条查询分别查,最后再合并。
由于没给出你当前的sql及表结构,暂无法给出其他建议