ITPub博客

首页 > 数据库 > Oracle > oracle12c新特性之APPROX_COUNT_DISTINCT函数

oracle12c新特性之APPROX_COUNT_DISTINCT函数

原创 Oracle 作者:水逸冰 时间:2018-08-27 15:14:13 0 删除 编辑

oracle 12c新特性之APPROX_COUNT_DISTINCT函数

在进行sql优化时经常要统计某一列不同的值的个数,进而计算该列的选择性。但是在表体量很大,并且列上又没有索引时,count(distinct column)经常要花费很长的时间。12c提供了一个近似去重的新函数approx_count_distinct。这个函数的返回值是不准确的,不统计null值,但是胜在速度快。

SQL> set timing on
SQL> alter system flush buffer_cache;
SQL> alter system flush shared_pool;

SQL> SELECT count(distinct SECURITYFULLNAME) FROM CDSY_SECUCODE;

COUNT(DISTINCTSECURITYFULLNAME)
-------------------------------
                        1334427

Elapsed: 00:00:07.13
SQL> SELECT APPROX_COUNT_DISTINCT(SECURITYFULLNAME) FROM CDSY_SECUCODE;

APPROX_COUNT_DISTINCT(SECURITYFULLNAME)
---------------------------------------
                                1310729

Elapsed: 00:00:00.82

可以看到时间差距非常明显,新函数特别快,当然准确性差了些。执行计划中会看到SORT AGGREGATE APPROX。

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/31480688/viewspace-2212895/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
精通oracle,mysql和linux,热衷于研究数据库,擅长shell和Python自动化运维。VX:18302174682

注册时间:2017-08-05

  • 博文量
    117
  • 访问量
    188647