删除数百万行后如何加快对Oracle表的访问?
我是Oracle和数据库工作人员的新手 我有一个巨大的Oracle 11g数据表,有2亿行。我把它们全部删除,只保留了一个。我读了很多关于删除行后如何恢复表空间等的文章,但是访问我的表仍然需要很长时间(分钟) 例如:删除数百万行后如何加快对Oracle表的访问?,oracle,Oracle,我是Oracle和数据库工作人员的新手 我有一个巨大的Oracle 11g数据表,有2亿行。我把它们全部删除,只保留了一个。我读了很多关于删除行后如何恢复表空间等的文章,但是访问我的表仍然需要很长时间(分钟) 例如: 从MyTable中选择*返回一条记录需要0.02秒,这是正常的 从ID>0的MyTable中选择*返回一条记录需要20分钟以上 (ID字段具有索引) 我已成功运行以下命令: altertablemytable启用行移动 altertablemytable压缩空间 altertabl
从MyTable中选择*代码>返回一条记录需要0.02秒,这是正常的
从ID>0的MyTable中选择*代码>返回一条记录需要20分钟以上
(ID字段具有索引)
我已成功运行以下命令:
altertablemytable启用行移动代码>
altertablemytable压缩空间代码>
altertablemytable取消分配未使用的代码>
但我还是有同样的问题
有什么想法吗?您是否更新了表统计信息?我该怎么做?如果您只想保留一行,为什么不将一行复制到另一个表中(例如,使用CREATE table mytable\u temp AS SELECT*FROM mytable WHERE…
),然后截断mytable
,然后将一行复制回来TRUNCATE
将回收表以前使用的所有空间。另一个尝试是在ID
列上重建索引。是否运行了dbms\u stats.analyze\u table()
?