Oracle 12C R2-新特性-近似查询处理
1 关于近似查询处理
近似查询处理使用SQL函数为可接受近似的探索性查询提供实时响应。 包含返回近似结果的SQL函数的查询称为近似查询。
比如BI使用的聚合函数,包括一些分析工具,当数据量非常大的时候,如果要提供非常精确的数据的时候,无疑会消耗大量的资源去计算。如果一些场景中,对于数量的精确性要求不高,而且对速度要求很高的。那么这个近似查询无疑是最好的选择。几乎实时的返回结果。
Oracle提供了一组SQL函数,使您能够获得与精确结果具有可忽略的偏差的近似结果。 还有其他近似函数支持基于视图的汇总聚合策略。 提供近似结果的函数如下:
·APPROX_COUNT_DISTINCT
·APPROX_COUNT_DISTINCT_DETAIL
·APPROX_COUNT_DISTINCT_AGG
·TO_APPROX_COUNT_DISTINCT
·APPROX_MEDIAN
·APPROX_PERCENTILE
·APPROX_PERCENTILE_DETAIL
·APPROX_PERCENTILE_AGG
·TO_APPROX_PERCENTILE
可以使用近似查询处理,而不对现有代码进行任何更改。 当设置适当的初始化参数时,Oracle数据库将查询中的确切函数替换为返回近似结果的相应SQL函数。
例如:使用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)这个参数,就不用显示指定这个函数。
如:
SQL> show parameter approx
NAME TYPE VALUE
------------------------------------ ---------------------- --------------------
approx_for_aggregation boolean FALSE
approx_for_count_distinct boolean FALSE
approx_for_percentile string none
SQL> alter session/system set approx_for_aggregation = 'TRUE';
这样就可以直接使用SQL> select COUNT(distinct OBJECT_NAME) from dba_objects;
同样能达到近似值的目的。
更多信息请参考官方文档:
版权声明:本文为博主原创文章,未经博主允许不得转载。
近似查询