现在有一张表,数据有500W以上,即使加index了,但是查询效率还是很不满意。
问了朋友,说是加物化视图或者做分区表格【分区表能提高查询效率?】
我先走纠结要怎么做调高效率。谁比较有经验的能详细介绍一下我该用什么解决方法?
还有索引还可以怎么优化,我先走只是加普通的索引而已。麻烦详细说下,我是Oracle菜鸟。。

解决方案 »

  1.   

    1.索引由于你的表进行了频繁的增删改,使得你的索引对象的存储的空间产生了许多的碎片的,这个时候你需要把你建立的索引进行重建的操作可以解决问题,建议你的索引和数据在不同的表空间上。
    2.oracle的执行计划,会根据你实际的环境选择合适的执行计划,是选择的(rbo or cbo),会根据你的表是否包含了统计信息的来选择,这个时候你就只需要analyze table tablename compute statistics分析下表
    3.使用分区表的确是种很好的提高效率的办法,他使得以前的一次性取数据变为了多个进程并行查找,效率肯定是不言而喻的,不过的这是需要有代价的,你必须指定你的数据在不同的表空间,最好在不同的磁盘。
    4.目标表上面最好不要建立过多的索引,这样减低你的更新操作的性能,建议使用hints方式,代替。
      

  2.   

    分区表就是可以根据分区键来划分范围 查询的时候自动选择符合条件的分区。经常DML表的话 你整理表 和重建索引试试