能否在Netezza中通过UNION ALL基于互斥子类型表创建超类型物化视图?
在Netezza中用UNION ALL创建超类型物化视图的可行性
结论:完全可以在Netezza中通过
CREATE MATERIALIZED VIEW结合UNION ALL实现你的需求。因为你的子类型表记录互斥无交集,UNION ALL不会执行去重操作,性能比UNION更优,正好匹配你的场景。实现示例:
假设你有两个子类型表customer_individual(个人客户)和customer_business(企业客户),两者包含超类型实体的核心字段,同时各有专属子类型字段,创建物化视图的SQL语句如下:CREATE MATERIALIZED VIEW mv_customer_supertype AS SELECT customer_id, name, contact_info, 'INDIVIDUAL' AS customer_type, date_of_birth -- 个人客户专属字段 FROM customer_individual UNION ALL SELECT customer_id, name, contact_info, 'BUSINESS' AS customer_type, business_reg_num -- 企业客户专属字段 FROM customer_business;关键注意点:
- 必须保证
UNION ALL前后的查询结果字段数量、对应位置的数据类型完全一致,Netezza对字段一致性要求严格。 - 物化视图创建后不会自动同步基表数据,需要手动执行
REFRESH MATERIALIZED VIEW mv_customer_supertype;来更新视图内容。 - 由于子表记录无交集,无需使用
UNION(会额外触发去重逻辑,消耗不必要的资源),UNION ALL是最优选择。
- 必须保证
内容的提问来源于stack exchange,提问作者Johan Wagener
相关产品推荐
相关产品推荐

