|
Re: Re: 提取表中的所有列,建单列和复合索引都没有用
最初由 husthxd 发布
[B]
1.尝试重新组织表
-- 把表数据备份到临时表中
-- 重新组织表数据
truncate table ....;
create table ... as select * from temp_table order by prma,fln,fs,fltdate; [/B]
按上面的方法重建了表、索引,其后又将索引放入keep池,consistent gets和physical read都大大减小了但是执行时间都没有缩短,为什么?
执行计划,统计及时间如下:
SQL> select
2 *
3 from
4 SSTATUS_BAK a
5 where
6 (
7 fltdate>=trunc(sysdate)
8 and fltdate<(trunc(sysdate)+7)
9 )
10 order by
11 PRMA,FLN,FS,FLTDATE;
32269 rows selected.
Elapsed: 00:00:26.36
Execution Plan
----------------------------------------------------------
0 SELECT STATEMENT Optimizer=CHOOSE
1 0 TABLE ACCESS (BY INDEX ROWID) OF 'SSTATUS_BAK'
2 1 INDEX (FULL SCAN) OF 'FLT_IND_BAK' (UNIQUE)
Statistics
----------------------------------------------------------
0 recursive calls
0 db block gets
12597 consistent gets
3719 physical reads
0 redo size
4291448 bytes sent via SQL*Net to client
174589 bytes received via SQL*Net from client
2153 SQL*Net roundtrips to/from client
0 sorts (memory)
0 sorts (disk)
32269 rows processed
SQL> alter index FLT_IND_BAK storage (buffer_pool keep);
Index altered.
Elapsed: 00:00:00.01
SQL> select
2 *
3 from
4 SSTATUS_BAK a
5 where
6 (
7 fltdate>=trunc(sysdate)
8 and fltdate<(trunc(sysdate)+7)
9 )
10 order by
11 PRMA,FLN,FS,FLTDATE;
32269 rows selected.
Elapsed: 00:00:26.49
Execution Plan
----------------------------------------------------------
0 SELECT STATEMENT Optimizer=CHOOSE
1 0 TABLE ACCESS (BY INDEX ROWID) OF 'SSTATUS_BAK'
2 1 INDEX (FULL SCAN) OF 'FLT_IND_BAK' (UNIQUE)
Statistics
----------------------------------------------------------
271 recursive calls
3 db block gets
12671 consistent gets
374 physical reads
0 redo size
4291448 bytes sent via SQL*Net to client
174589 bytes received via SQL*Net from client
2153 SQL*Net roundtrips to/from client
4 sorts (memory)
0 sorts (disk)
32269 rows processed
SQL>
SQL> select
2 *
3 from
4 SSTATUS_BAK a
5 where
6 (
7 fltdate>=trunc(sysdate)
8 and fltdate<(trunc(sysdate)+7)
9 )
10 order by
11 PRMA,FLN,FS,FLTDATE;
32269 rows selected.
Elapsed: 00:00:26.34
Execution Plan
----------------------------------------------------------
0 SELECT STATEMENT Optimizer=CHOOSE
1 0 TABLE ACCESS (BY INDEX ROWID) OF 'SSTATUS_BAK'
2 1 INDEX (FULL SCAN) OF 'FLT_IND_BAK' (UNIQUE)
Statistics
----------------------------------------------------------
0 recursive calls
0 db block gets
12597 consistent gets
0 physical reads
0 redo size
4291448 bytes sent via SQL*Net to client
174589 bytes received via SQL*Net from client
2153 SQL*Net roundtrips to/from client
0 sorts (memory)
0 sorts (disk)
32269 rows processed |
|