【发布时间】:2012-04-23 11:52:56
【问题描述】:
我有一个包含大约 10 万条记录的表,我想删除一些行,问题是 DELETE 语句运行非常缓慢 - 它没有在 30 分钟内完成。但是select 语句在 1 秒内返回。
SELECT声明如下:
select * from daily_au_by_service_summary
where summary_ts >= to_date('09-04-2012','dd-mm-yyyy')
order by summary_ts desc;
和DELETE声明如下:
delete from daily_au_by_service_summary
where summary_ts > to_date('09-04-2012','dd-mm-yyyy');
此表的唯一索引为 summary_ts。
可能是什么原因?
编辑:在我杀死锁定表的会话后,问题已经解决,感谢大家的帮助。
SESSION_ID ORACLE_USERNAME OS_USER_NAME OBJECT OWNER OBJECT_NAME OBJECT_TYPE LOCKED_MODE
---------- ------------------------------ ------------------------------ ------------------------------ -------------------------------------------------------------------------------------------------------------------------------- ------------------- -----------
213 T03RPT elou T03RPT DAILY_AU_BY_SERVICE_SUMMARY TABLE 3
203 T03RPT elou T03RPT DAILY_AU_BY_SERVICE_SUMMARY TABLE 3
202 T03RPT elou T03RPT DAILY_AU_BY_SERVICE_SUMMARY TABLE 3
190 T03RPT elou T03RPT DAILY_AU_BY_SERVICE_SUMMARY TABLE 3
189 T03RPT elou T03RPT DAILY_AU_BY_SERVICE_SUMMARY TABLE 3
188 T03RPT elou T03RPT DAILY_AU_BY_SERVICE_SUMMARY TABLE 3
187 T03RPT elou T03RPT DAILY_AU_BY_SERVICE_SUMMARY
【问题讨论】:
-
你是如何确定它没有完成的?也许它已完成但尚未提交,并且在提交之前您看不到从另一个连接发生删除。
-
我在 sqlplus 控制台中运行它,它只是没有返回。所以我认为该语句仍在执行中。
-
终止会话是一个完全不同的话题。请提出一个新问题(以便其他人更容易找到该解决方案)。然后,将此问题的链接添加到新问题。
-
在我杀死了锁表的会话后问题已经解决了,谢谢大家的帮助。