有一张表,本来里面有一些数据有20多万,没删数据之前查询什么的都很迅速,很正常。但是删除数据,就是delete from tablename,这时表里没有数据了,怎么再select怎么明显速度很慢了呀?

解决方案 »

  1.   

    可能是延迟块清除造成的多select几次试试
      

  2.   

    truncate table table_name;
    后再查询看看,时间怎么样。难道是传说中的高水位?
      

  3.   

    用truncate table table_name 能删除高水位的delete table table_name 虽然能删除记录 但是空间会被占用的  得用truncate table table_name 进行删除
      

  4.   

    就是说假设你表里有100M的数据
    现在你虽然删除了70M数据 还剩30M
    可是现在ORACLE在进行查询的时候仍然会查询100M的空间(其实其中有70M是空的)
    这是因为高水位还在100M那个地方你使用上面朋友说的那个命令
    truncate table table_name;
    试试
    这个命令可以把高水位从100M降到30M的地方
    这样在查询的时候只用扫描30M的空间
      

  5.   

    延迟块清除啊……
    这个一言两语说不太清楚
    http://blog.csdn.net/wh62592855/archive/2009/10/26/4730623.aspx看看上面的文章吧
      

  6.   

    我也遇到这个问题,空表 select * from table 居然也要6秒钟。
    关注中
      

  7.   

    truncate table table_name; 会把整个表数据都删除的,如果只删除部分数据后,想把高水位降低要怎么办呢?