我想知道 oracle一个表中的上千万条,如何使查询按时间来达到更快的效果,若是分区请给出合理的解释?

我想知道 oracle一个表中的上千万条,如何使查询按时间来达到更快的效果,若是分区请给出合理的解释?若是一个区中的数据放在一个表空间中还是 都放在一个表空间好。另一个问题是 where 后面的条件从查询,赛选,索引上来说 有没有先后顺序。从一千万条记录中按时间来查询 测试的时间为15秒左右,这个时间客户远远不能承受,急需更好的或是更有的解决方案。

1、是否按时间分区,要看你的查询条件了,如果查询的都是有明确的日期,那当然可以分区,这样在查询过程中oracle只会在符合条件的分区中查询数据相当于减少了查询数量。
2、具体放在多少个表空间里这个是和你的硬件有直接关系的。如果你只有一块硬盘,那不论你分多少个表空间,在读写时也只有一个driver在运作,能快到哪去?而你有多个driver的话那你可以尝试将数据平均分布到各个driver上(这里asm就体现出强大的一面了,当然你也可以通过做条带化来实现)。
3、实际上具体的调优,你可以从尝试优化oracle的执行计划入手,几千万数据而已,不多。
怎么看执行计划?上网查o(∩_∩)o
温馨提示:内容为网友见解,仅供参考
第1个回答  2011-12-14
分区,表大小超过2G就应该分区,千万记录应该分区。
分区的好处,简单的说,你建12张表,每张表放一个月的,那是不是你在查询每个月的时候就直接在哪个表中查,比你在全年的表中查要快。
建立分区的方法你搜下,在使用的时候要注意,你建立分区的字段不能做函数操作,否则失效。客户要效率,那你不麻烦就把分区建小写不过也别太小。那样扩展麻烦。
建议月分区。范围分区
第2个回答  2011-12-12
千万条而已,建个索引就ok了,当然也可以考虑分区,按照月份也可以,一年12个月,你分12个区,或者按年份来,比如从99年开始到现在来分,你说的有点笼统了,这类的问题,最好贴上你的执行计划,当然保证执行计划是在你进行表分析之后拿到的正确的执行计划
第3个回答  2011-12-10
1.可以按时间分区,比如0102这样,一共分365个区。查询的时候可以按分区查询。
2.每个区的数据据理论上放在365个表空间上较好,当然也可以用1个表空间。依据实际情况定。
3.最好查询条件的顺序和索引的顺序是一致的。
相似回答