我们的数据仓库中有很多星型模式。我想我可以创建视图来简化数据的SQL分析。从数据仓库中的星型模式创建视图
实例SQL利润&损失星级:
select
month_number,
sum(amount)
from
bizdata.dw_daily_pl_fact dwdpf
join bizdata.dw_distance dwdis on (dwdis.distance_key= dwdpf.distance_key)
join bizdata.dw_ledger_account dwled on (dwled.ledger_account_key= dwdpf.ledger_account_key)
join bizdata.dw_party dwpar on (dwpar.party_key= dwdpf.company_key)
join bizdata.dw_party dwpar2 on (dwpar2.party_key= dwdpf.supplier_key)
join bizdata.dw_budget_code dwbud on (dwbud.budget_code_key= dwdpf.budget_code_key)
join bizdata.dw_time dwtim on (dwtim.time_key= dwdpf.time_key)
join bizdata.dw_project dwpro on (dwpro.project_key= dwdpf.project_key)
where
year_number = 2012
and budget_code = 'SALARIES'
group by
month_number
(有大约200列和10万行的这颗星)
如果我有一个观点:
create or replace view bizdata.dwv_pl_fact as (
select
*
from
bizdata.dw_daily_pl_fact dwdpf
join bizdata.dw_distance dwdis on (dwdis.distance_key= dwdpf.distance_key)
join bizdata.dw_ledger_account dwled on (dwled.ledger_account_key= dwdpf.ledger_account_key)
join bizdata.dw_party dwpar on (dwpar.party_key= dwdpf.company_key)
join bizdata.dw_party dwpar2 on (dwpar2.party_key= dwdpf.supplier_key)
join bizdata.dw_budget_code dwbud on (dwbud.budget_code_key= dwdpf.budget_code_key)
join bizdata.dw_time dwtim on (dwtim.time_key= dwdpf.time_key)
join bizdata.dw_project dwpro on (dwpro.project_key= dwdpf.project_key)
);
我可以简化为以下声明:
select
month_number,
sum(amount)
from
bizdata.dwv_pl_fact
where
year_number = 2012
and budget_code = 'SALARIES'
group by
month_number
我的问题是 - 这种方法是否存在性能问题或其他问题?
使用EXPLAIN和EXPLAIN ANALYZE查看任何差异。如果有的话。 –
@FrankHeikens对于这种情况,没有区别。但我不确定这在所有情况下都是如此。 –