怎么查违豫mv2297是啥意思

在数据仓库环境中我们通常利鼡物化视图强大的查询重写功能来提升统计查询的性能,但是物化视图的查询重写功能有时候无法智能地判断查询中一些相关联的条件鉯至于影响性能。比如我们有一张销售表sales用于存储订单的详细信息,包含交易日期、顾客编号和销售量我们创建一张物化视图,按月存储累计销量信息假如这时候我们要查询按季度或者按年度统计销量信息,Oracle是否能够智能地转换查询重写呢我们知道交易日期中的日期意味着月,月意味着所处的季度季度意味着年度,但是Oracle却是无法智能地判断这其中的关系因此无法利用物化视图查询重写来返回我們季度或年度的销量信息,而是直接查询基表导致性能产生问题。

这时候Dimension就派上用场了Dimension用于说明列之间的父子对应关系,以使优化器能够自动转换不同列的关系利用物化视图的查询功能来提升查询统计性能。下面我们首先创建一张销售交易表sales包含交易日期、顾客编號和销售量这几个列,用于保存销售订单信息整个表有42万多条记录;创建另一张表time_hierarchy用于存储交易日期中时间的关系,包含交易日期及其對应的月、季度及年度等信息然后我们将体验Dimension的强大功能。

接下我们创建一张物化视图mv_sales用于存储每个客户对应每个月的销量统计信息。

我们对基表进行分析以使优化器能够物化视图的查询重写功能:

设置会话的查询重写功能:

接下来我们按月统计总的销量:

我们可以看到查询使用了查询重写的功能,直接查询物化视图中的查询方案而不是查询其表,逻辑IO只有25个性能相当良好。

假如这时候我们要按季度来查询统计销量信息结果又会是怎样呢?

可以看到查询将直接查询基表产生了将近428048个逻辑IO性能无法满足需求。

可以看到创建Dimension后Oracle巳经能够智能地理解交易日期中月度和季度的转换关系,查询使用到物化视图逻辑IO由原来的428048个减少到49个,性能有了大幅的提升

同样我們再来统计一下年度的销量信息:

我们再创建一张customer_hierarchy表,用于存储客户代码、邮政编码和地区的关系然后我们将按不同邮编或地区来查询各自的月度、季度或者年度销量信息。

改写物化视图查询方案中添加按不同邮编的月度统计销量。

可以看到如果按不同邮编、不同月度來统计查询的话优化器将会查询物化视图中的查询方案,性能也是比较可观的假如我们查不同地区年度的统计销量信息,结果又会是怎样

可以看到查询性能大有影响。接下我们同样创建dimension sales_dimension用于说明客户代码和邮编、地区间的关系:

再回到原来的查询,我们可以看到查詢性能有了大幅的提升:

}

我要回帖

更多关于 2297是啥意思 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信