Oracle中小表全表扫描为何如此慢?

0
最近遇到一个奇怪现象,一个并不算大的表:
select segment_name,bytes/1024/1024/1024 from dba_segments  where segment_name='TEST' and OWNER='SYS';
SEGMENT_NAME                                                                      BYTES/1024/1024/1024
--------------------------------------------------------------------------------- --------------------
TEST                                                                                        .183532715
该TEST表是从生产表Create as select过来的,大小仅200M不到,但全表扫描耗时达到了26秒
SQL> set autot traceonly;
SQL> select * from CWT2B_XXB10;

528197 rows selected.

Elapsed: 00:00:15.19
请问这其中有哪些因素可能影响全表扫描的耗时?
已邀请:
0

老头子 - 专注是唯一的捷径 2015-12-25 回答

你这个26s应该不仅仅是全表扫描的时间,只是扫描应该没这么慢。
1. 你是刚刚copy来的表,不存在HWM的问题
2. 测试表,暂时排除锁的问题
3. 是select * 还是count(*) 你的SQL是什么样的?
最好发下你的详细的执行步骤,而且你的执行计划貌似没贴出来。
 
0

haibin1999 2015-12-25 回答

好像遇到过这种问题,很难再现。 应该和块的延迟擦除导致频繁读取undo有关吧。 收集一下统计信息,接触一下块,第一次慢,以后就没事了。好像是这么回事

要回复问题请先登录注册