我有个表经过我几次增加和删除大量数据后(20多W条),我使用
select * from 表 都需要0.5秒,而表里面没有任何记录换成其他表,即使有几百条数据
select * from 表也只要0.04秒。这个是怎么回事?在不删除表的情况下怎么样做才能使它变快

解决方案 »

  1.   

    对你的表进行撤销操作 truncate table tb_name;
      

  2.   

    你的这个表经过几次增加和删除大量数据后碎片太多,而且你没用truncate,所以表的高水位没降下来,每次读取都要读到高水位,不关是否有数据.
    办法就是重建表
    1. alter table xxx move 到其它表空间,再move回来
    2. 先转移数据,再tuncate table,最后把数据转回来
      

  3.   

    有大量数据操作的后, 要及时对表进行分析, 否则优化器的执行计划可能会不准确.SQL> analyze table 表名 compute statistics;