如何提高大数据量表的select count

作为新员工,根据Role的不同会被自动加入一些公司内部的邮件组中,这在Oracle称为helpinglist。
比如helpperf就是关于Oracle数据库性能问题的邮件组,平时没有自己工作的时候看看这些往来的技术邮件也是挺有意思的。

helpperf今天上午就有一个关于select count(*) from a如何提高性能的讨论,a表中有44 million的数据。
有人提出的建议就很有实验意义,可惜今天没有可以用于实验的数据库环境,否则就测试一下了。

So in order to speed it up you need to read less blocks and do it in parallel … you need to find the smallest column that has a not null constraint … create a global partition index by hash …

也就是对于一个有索引的大数据量表进行select count(*),能够提高性能的就是读最少的index block并且并行,那么我们可以在一个最小的非空列上创建一个hash类型的全局分区索引。这样index fast full scan就有可能提高速度了。

Oracle内部的高手一定很多,但是在外声名显赫的无非就是Tom那几个人,也许这个helpinglist也是原因之一吧,既然公司内部就有广泛交流的渠道,当然就少了很多动力去外面抛头露面了。

2 Comments Add yours

  1. starlvzhen says:

    理想实现,恭喜!
    你老大,以后一定要坚持有动力并外面抛头露面的说!

  2. adam says:

    找个distinct value小的字段建bitmap索引不更好么,呵呵,当然前提是有这种字段了.

Leave a Reply

Your email address will not be published. Required fields are marked *