现有一表test_a是个空表,初始大小为1024,我往里面插入了一些测试数据,通过dba_segments查看表大小为204800,然后delete掉这些数据.再通过dba_segments查看表大小还是204800,但实际表中一条数据也没有.尤其是当一个表刚开始有上千万的数据,然后再把表delete掉很多数据,保留很少的数据,虽然数据减少了,但全表扫描时还是扫描了很多无数据的块.有谁知道有没有好的方法来减少全表扫描的范围?另外有没有一些视图来查看表中实际数据的大小?

解决方案 »

  1.   

    有个Rebuild的功能,可以试验一下。
    另外有没有一些视图来查看表中实际数据的大小?
    这个么,我记得《Oracle傻瓜1000问》中有的,其中的第12条
    12. 怎样计算一个表占用的空间的大小? select owner,table_name, 
    NUM_ROWS, 
    BLOCKS*AAA/1024/1024 "Size M", 
    EMPTY_BLOCKS, 
    LAST_ANALYZED 
    from dba_tables 
    where table_name='XXX'; Here: AAA is the value of db_block_size ; 
    XXX is the table name you want to check