Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
删除数百万行后如何加快对Oracle表的访问?_Oracle - Fatal编程技术网

删除数百万行后如何加快对Oracle表的访问?

删除数百万行后如何加快对Oracle表的访问?,oracle,Oracle,我是Oracle和数据库工作人员的新手 我有一个巨大的Oracle 11g数据表,有2亿行。我把它们全部删除,只保留了一个。我读了很多关于删除行后如何恢复表空间等的文章,但是访问我的表仍然需要很长时间(分钟) 例如: 从MyTable中选择*返回一条记录需要0.02秒,这是正常的 从ID>0的MyTable中选择*返回一条记录需要20分钟以上 (ID字段具有索引) 我已成功运行以下命令: altertablemytable启用行移动 altertablemytable压缩空间 altertabl

我是Oracle和数据库工作人员的新手

我有一个巨大的Oracle 11g数据表,有2亿行。我把它们全部删除,只保留了一个。我读了很多关于删除行后如何恢复表空间等的文章,但是访问我的表仍然需要很长时间(分钟)

例如:

从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()