|
昨晚对测试库的该表作了100%的采集,操作后,该语句的执行计划恢复正常,据此,我也在正式库对该表作了100%的采样操作,但很奇怪,同样的采集命令,采集后在正式库上却没达到预期的结果,
--此处对关键索引做了采集 ,采集比例 100%
HLWL@orcl2>exec dbms_stats.gather_index_stats(user,'IDX_CT_OPE_WAYBILL_HLIT_01',estimate_percent=>100);
PL/SQL procedure successfully completed.
Elapsed: 00:00:24.26
--再次测试,没效果
EXPLAIN PLAN FOR
SELECT
w.fid AS id ,
w.FNumber AS waybillnumber ,
w.CFBillFrom AS billfrom ,
w.CFCustomerOrderNumber AS ordernumber ,
w.CFCustomerTransNumber AS transnumber
FROM CT_OPE_WayBill w
WHERE w.FCreateTime >= to_date('2016-07-01 00:00:00','yyyy-MM-dd HH24:mi:ss')
AND w.FCreateTime <= to_date('2016-07-31 23:59:59','yyyy-MM-dd HH24:mi:ss');
--SELECT * FROM DISPLAY;
SELECT * FROM TABLE(DBMS_XPLAN.DISPLAY);
Explained.
Elapsed: 00:00:00.02
HLWL@orcl2>HLWL@orcl2>HLWL@orcl2>
PLAN_TABLE_OUTPUT
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Plan hash value: 3771011500
---------------------------------------------------------------------------------------------------------------------------------
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time | Pstart| Pstop |
---------------------------------------------------------------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 158K| 8804K| 68118 (1)| 00:00:45 | | |
| 1 | PARTITION RANGE ITERATOR | | 158K| 8804K| 68118 (1)| 00:00:45 | 75 | 76 |
| 2 | TABLE ACCESS BY LOCAL INDEX ROWID| CT_OPE_WAYBILL | 158K| 8804K| 68118 (1)| 00:00:45 | 75 | 76 |
|* 3 | INDEX RANGE SCAN | IDX_CT_OPE_WAYBILL_HLIT_01 | 158K| | 477 (4)| 00:00:01 | 75 | 76 |
---------------------------------------------------------------------------------------------------------------------------------
PLAN_TABLE_OUTPUT
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Predicate Information (identified by operation id):
---------------------------------------------------
3 - access("W"."FCREATETIME">=TIMESTAMP' 2016-07-01 00:00:00' AND "W"."FCREATETIME"<=TIMESTAMP' 2016-07-31 23:59:59')
15 rows selected.
Elapsed: 00:00:00.03
--对该表作了100%采样,但因为上面已经对关键索引IDX_CT_OPE_WAYBILL_HLIT_01作了100%采样,因此,这里采样时,就不像测试库上的那样,没有这个选项:cascade=>true
HLWL@orcl2>exec dbms_stats.gather_table_stats(user,'CT_OPE_WAYBILL',estimate_percent=>100); -- 这里
PL/SQL procedure successfully completed.
Elapsed: 03:18:02.20
HLWL@orcl2>HLWL@orcl2>HLWL@orcl2>
--采集完后, 马上在另外一个窗口测试 ,却没得到如期的结果
Connected.
EXPLAIN PLAN FOR
SELECT
w.fid AS id ,
w.FNumber AS waybillnumber ,
w.CFBillFrom AS billfrom ,
w.CFCustomerOrderNumber AS ordernumber ,
w.CFCustomerTransNumber AS transnumber
FROM CT_OPE_WayBill w
WHERE w.FCreateTime >= to_date('2016-07-01 00:00:00','yyyy-MM-dd HH24:mi:ss')
AND w.FCreateTime <= to_date('2016-07-31 23:59:59','yyyy-MM-dd HH24:mi:ss');
--SELECT * FROM DISPLAY;
SELECT * FROM TABLE(DBMS_XPLAN.DISPLAY);
Explained.
Elapsed: 00:00:00.02
HLWL@orcl2>HLWL@orcl2>HLWL@orcl2>
PLAN_TABLE_OUTPUT
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Plan hash value: 3771011500
---------------------------------------------------------------------------------------------------------------------------------
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time | Pstart| Pstop |
---------------------------------------------------------------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 181K| 9M| 78089 (1)| 00:00:51 | | |
| 1 | PARTITION RANGE ITERATOR | | 181K| 9M| 78089 (1)| 00:00:51 | 75 | 76 |
| 2 | TABLE ACCESS BY LOCAL INDEX ROWID| CT_OPE_WAYBILL | 181K| 9M| 78089 (1)| 00:00:51 | 75 | 76 |
|* 3 | INDEX RANGE SCAN | IDX_CT_OPE_WAYBILL_HLIT_01 | 181K| | 547 (4)| 00:00:01 | 75 | 76 |
---------------------------------------------------------------------------------------------------------------------------------
PLAN_TABLE_OUTPUT
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Predicate Information (identified by operation id):
---------------------------------------------------
3 - access("W"."FCREATETIME">=TIMESTAMP' 2016-07-01 00:00:00' AND "W"."FCREATETIME"<=TIMESTAMP' 2016-07-31 23:59:59')
15 rows selected.
Elapsed: 00:00:00.08
--今早再试,结果还是不行,但COST比起昨晚的,大大降低了,估计是今早定时作业又对该表作了采样统计,
EXPLAIN PLAN FOR
SELECT
w.fid AS id ,
w.FNumber AS waybillnumber ,
w.CFBillFrom AS billfrom ,
w.CFCustomerOrderNumber AS ordernumber ,
w.CFCustomerTransNumber AS transnumber
FROM CT_OPE_WayBill w
WHERE w.FCreateTime >= to_date('2016-07-01 00:00:00','yyyy-MM-dd HH24:mi:ss')
AND w.FCreateTime <= to_date('2016-07-31 23:59:59','yyyy-MM-dd HH24:mi:ss');
--SELECT * FROM DISPLAY;
SELECT * FROM TABLE(DBMS_XPLAN.DISPLAY);
Explained.
Elapsed: 00:00:00.02
HLWL@orcl2>HLWL@orcl2>HLWL@orcl2>
PLAN_TABLE_OUTPUT
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Plan hash value: 3771011500
---------------------------------------------------------------------------------------------------------------------------------
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time | Pstart| Pstop |
---------------------------------------------------------------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 5406 | 300K| 2350 (1)| 00:00:02 | | |
| 1 | PARTITION RANGE ITERATOR | | 5406 | 300K| 2350 (1)| 00:00:02 | 75 | 76 |
| 2 | TABLE ACCESS BY LOCAL INDEX ROWID| CT_OPE_WAYBILL | 5406 | 300K| 2350 (1)| 00:00:02 | 75 | 76 |
|* 3 | INDEX RANGE SCAN | IDX_CT_OPE_WAYBILL_HLIT_01 | 5462 | | 18 (6)| 00:00:01 | 75 | 76 |
---------------------------------------------------------------------------------------------------------------------------------
PLAN_TABLE_OUTPUT
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Predicate Information (identified by operation id):
---------------------------------------------------
3 - access("W"."FCREATETIME">=TIMESTAMP' 2016-07-01 00:00:00' AND "W"."FCREATETIME"<=TIMESTAMP' 2016-07-31 23:59:59')
15 rows selected.
Elapsed: 00:00:00.05
HLWL@orcl2>
|
|