我有一个约100k记录的表,我想删除一些行,问题是该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;
Run Code Online (Sandbox Code Playgroud)
并DELETE声明如下:
delete from daily_au_by_service_summary
where summary_ts > to_date('09-04-2012','dd-mm-yyyy');
Run Code Online (Sandbox Code Playgroud)
此表的唯一索引位于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 …Run Code Online (Sandbox Code Playgroud)