大家好:
      我有个问题想请教一下大家 ,我有个表数据更新的很快,比如说今天可能短时间内突然加入一千万条数据,但是可能过个几天,我就把这些数据清除到只有几千条,但是从TOAD里查看表的parameter  中的size in MB 却没有减小,还是很大,而且查询这张表还是比较慢,
请问是什么原因,有什么解决的方法吗?

解决方案 »

  1.   

    1、删除数据(delete)可以重用原来的空间并不会释放原来已占用的空间
    2、查询还比较慢的原因是高水位问题,如果是全扫描,实际扫描的数据是此表曾经进入过最多记录时占用的所有数据块
        解决:
    1)方法一、move表并重建索引
    2) 方法二、shink表 alter table xx shrink space cascade 
    3)方法三、创建一结构跟当前表相同的表,旧表数据转移至新表,并进行表重命名操作然后编译失效对象
       采用何种方法根据实际情况来选择。
      

  2.   


    alter table tablename move
      

  3.   

    避免用delete ,如果数据量变动比较大,但又不清空表的话,可以根据保留数据特性设计分区(使用分区truncate)或者转出后truncate在转入的做法