oracle中取近似值,Oracle 12C R2-新特性-近似查询处理

Oracle 12C R2-新特性-近似查询处理

https://www.cndba.cn/Expect-le/article/1785

1

关于近似查询处理

近似查询处理使用SQL函数为可接受近似的探索性查询提供实时响应。 包含返回近似结果的SQL函数的查询称为近似查询。

比如BI使用的聚合函数,包括一些分析工具,当数据量非常大的时候,如果要提供非常精确的数据的时候,无疑会消耗大量的资源去计算。如果一些场景中,对于数量的精确性要求不高,而且对速度要求很高的。那么这个近似查询无疑是最好的选择。几乎实时的返回结果。

Oracle提供了一组SQL函数,使您能够获得与精确结果具有可忽略的偏差的近似结果。 还有其他近似函数支持基于视图的汇总聚合策略。 提供近似结果的函数如下:

·APPROX_COUNT_DISTINCT

https://www.cndba.cn/Expect-le/article/1785

https://www.cndba.cn/Expect-le/article/1785

·APPROX_COUNT_DISTINCT_DETAILhttps://www.cndba.cn/Expect-le/article/1785

·APPROX_COUNT_DISTINCT_AGG

·TO_APPROX_COUNT_DISTINCT

·APPROX_MEDIAN

·APPROX_PERCENTILEhttps://www.cndba.cn/Expect-le/article/1785

·APPROX_PERCENTILE_DETAIL

·APPROX_PERCENTILE_AGG

·TO_APPROX_PERCENTILE

可以使用近似查询处理,而不对现有代码进行任何更改。 当设置适当的初始化参数时,Oracle数据库将查询中的确切函数替换为返回近似结果的相应SQL函数。https://www.cndba.cn/Expect-le/article/1785https://www.cndba.cn/Expect-le/article/1785

例如:使用approx_count_distinct这个函数,功能相当于count(distinct expr1)的近似值

SQL> select approx_count_distinct(OBJECT_NAME) from dba_objects;

APPROX_COUNT_DISTINCT(OBJECT_NAME)

----------------------------------

61109

Elapsed: 00:00:00.18

SQL> select COUNT(distinct OBJECT_NAME) from dba_objects;

COUNT(DISTINCTOBJECT_NAME)

--------------------------

60321

Elapsed: 00:00:00.24

上面这种情况,是需要你手动去指定这个函数approx_count_distinct,如果要配置了approx_for_count_distinct(默认值是false)这个参数,就不用显示指定这个函数。https://www.cndba.cn/Expect-le/article/1785

如:

https://www.cndba.cn/Expect-le/article/1785

SQL> show parameter approx

NAME TYPEVALUE

------------------------------------ ---------------------- --------------------

approx_for_aggregation boolean FALSE

approx_for_count_distinct boolean FALSE

approx_for_percentile stringnone

SQL> alter session/system set approx_for_aggregation = 'TRUE';

这样就可以直接使用SQL> select COUNT(distinct OBJECT_NAME) from dba_objects;

同样能达到近似值的目的。https://www.cndba.cn/Expect-le/article/1785

更多信息请参考官方文档:

版权声明:本文为博主原创文章,未经博主允许不得转载。

近似查询

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值