试试看如果“select * from a”很快,那么create table b as select * from a也应该很快的
问题可能出在a上有锁或者二进制大对象

解决方案 »

  1.   

    select * from a 很慢
    2000条记录,查询却要2分钟没有锁,没有二进制大对象
      

  2.   

    楼主不想追究原因的话直接删了现有的A表,重新一个A表得了:
    SQL>create table b as select * from a
    SQL>rename b to a
      

  3.   

    有可能是你对表的操作过多,很有可能是正在操作这个表并未真正结束,你可以看一下instance process里面的东东,看有没有其他进程。如果只是将sqlplus程序杀掉的话,是没有用的,只能将oracle 里的session给kill了,才行,不知道是不是这个原因。
      

  4.   

    重新建表我试了是可以的。问题我想知道为什么,所以一直没动那表我会去看看process和session大家似乎很少遇到这个问题。。
      

  5.   

    可能还是select * from a很慢,因为create table b as select * from a
    中也执行了select * from a,所以造成create table b as select * from a很慢,
    至于查询b很快,查询a很慢,估计是a表本身的问题,请高手支招!学习中...
      

  6.   

    可能是A表曾经有很多记录,然后delete,但是占用的空间没有释放。可以对表A做分析,然后查看user_tables,看看是否该表有很多空闲空间。
      

  7.   

    bobfang(匆匆过客) 如果有很多空闲空间,我该如何释放?
      

  8.   

    释放空闲的空间只能是截断表(TRUNCATE)或者是重新建表。