Re: Optimizer sees index, but ignores it in access path decision process
- From: Hemant K Chitale <hkchital@xxxxxxxxxxxxxx>
- To: paul.baumgartel@xxxxxxxxxxxxxxxxx, "oracle-l" <oracle-l@xxxxxxxxxxxxx>
- Date: Sat, 29 Sep 2007 21:24:59 +0800
For
Index: NUK_TCONTRACT_TRD_DT Col#: 35
USING COMPOSITE STATS
LVLS: 3 #LB: 402118 #DK: 80 LB/K: 5026.00 DB/K:
52071.00 CLUF: 4165752.00
The Distinct Keys are only 80 and Leaf Blocks per Key is a very high 5,026.
If the indexed column is a date are all the values inserted into the
table as TRUNC(SYSDATE) ?
Or does Oracle have the wrong statistics for the index ?
Hemant
At 04:35 AM Saturday, Baumgartel, Paul wrote:
Oracle 10.2.0.3 on Solaris.
Table is range-partitioned on TCONTRACT_TRADE_DATE. Query is
select
min(TCONTRACT_TRADE_DATE)
from ods.ods_tcontract;
A single-column partitioned index (NUK_TCONTRACT_TRD_DT) exists on
TCONTRACT_TRADE_DATE. Another (composite) index contains that
column in position 2. Optimizer chooses the second index every
time, even when a hint specifies the first one.
Optimizer (event 10053) trace shows awareness of the preferred index:
Index Stats::
Index: NUK_TCONTRACT_BUSDATE_CUSIP Col#: 52 20
USING COMPOSITE STATS
LVLS: 3 #LB: 713238 #DK: 384265 LB/K: 1.00 DB/K:
86.00 CLUF: 33203958.00
Index: NUK_TCONTRACT_CUSIP Col#: 20 35 57 1
USING COMPOSITE STATS
LVLS: 3 #LB: 955919 #DK: 112199564 LB/K: 1.00 DB/K:
1.00 CLUF: 43217198.00
Index: NUK_TCONTRACT_TRD_DT Col#: 35
USING COMPOSITE STATS
LVLS: 3 #LB: 402118 #DK: 80 LB/K: 5026.00 DB/K:
52071.00 CLUF: 4165752.00
But, in next section of trace, in which access paths are considered,
NUK_TCONTRACT_TRD_DT does not appear at all (see below). How can that be?
Paul Baumgartel
CREDIT SUISSE
Information Technology
Securities Processing Databases Americas
One Madison Avenue
New York, NY 10010
USA
Phone 212.538.1143
paul.baumgartel@xxxxxxxxxxxxxxxxx
<file://www.credit-suisse.com>www.credit-suisse.com
SINGLE TABLE ACCESS PATH
Table: ODS_TCONTRACT Alias: ODS_TCONTRACT
Card: Original: 115569516 Rounded: 115569516 Computed:
115569516.00 Non Adjusted: 115569516.00
Access Path: TableScan
Cost: 7280284.59 Resp: 7280284.59 Degree: 0
Cost_io: 7028169.00 Cost_cpu: 193577124940
Resp_io: 7028169.00 Resp_cpu: 193577124940
Access Path: index (index (FFS))
Index: NUK_TCONTRACT_CUSIP
resc_io: 489938.00 resc_cpu: 20271467483
ix_sel: 0.0000e+00 ix_sel_with_filters: 1
Access Path: index (FFS)
Cost: 516339.64 Resp: 516339.64 Degree: 1
Cost_io: 489938.00 Cost_cpu: 20271467483
Resp_io: 489938.00 Resp_cpu: 20271467483
Access Path: index (index (FFS))
Index: UK_TCONTRACT_TICKER
resc_io: 364308.00 resc_cpu: 18525881475
ix_sel: 0.0000e+00 ix_sel_with_filters: 1
Access Path: index (FFS)
Cost: 388436.18 Resp: 388436.18 Degree: 1
Cost_io: 364308.00 Cost_cpu: 18525881475
Resp_io: 364308.00 Resp_cpu: 18525881475
Access Path: index (FullScan)
Index: NUK_TCONTRACT_CUSIP
resc_io: 955985.00 resc_cpu: 29247902618
ix_sel: 1 ix_sel_with_filters: 1
Cost: 864847.50 Resp: 864847.50 Degree: 1
Access Path: index (FullScan)
Index: UK_TCONTRACT_TICKER
resc_io: 710868.00 resc_cpu: 27502316610
ix_sel: 1 ix_sel_with_filters: 1
Cost: 649617.80 Resp: 649617.80 Degree: 1
****** trying bitmap/domain indexes ******
Access Path: index (FullScan)
Index: NUK_TCONTRACT_CUSIP
resc_io: 955985.00 resc_cpu: 29247902618
ix_sel: 1 ix_sel_with_filters: 1
Cost: 864847.50 Resp: 864847.50 Degree: 0
Access Path: index (FullScan)
Index: UK_TCONTRACT_TICKER
resc_io: 710868.00 resc_cpu: 27502316610
ix_sel: 1 ix_sel_with_filters: 1
Cost: 649617.80 Resp: 649617.80 Degree: 0
******** Begin index join costing ********
****** trying bitmap/domain indexes ******
Access Path: index (FullScan)
Index: NUK_TCONTRACT_CUSIP
resc_io: 955985.00 resc_cpu: 29247902618
ix_sel: 1 ix_sel_with_filters: 1
Cost: 864847.50 Resp: 864847.50 Degree: 0
Access Path: index (FullScan)
Index: UK_TCONTRACT_TICKER
resc_io: 710868.00 resc_cpu: 27502316610
ix_sel: 1 ix_sel_with_filters: 1
Cost: 649617.80 Resp: 649617.80 Degree: 0
Access Path: index (FullScan)
Index: UK_TCONTRACT_TICKER
resc_io: 710868.00 resc_cpu: 27502316610
ix_sel: 1 ix_sel_with_filters: 1
Cost: 649617.80 Resp: 649617.80 Degree: 0
******** End index join costing ********
Best:: AccessPath: IndexFFS Index: UK_TCONTRACT_TICKER
Cost: 388436.18 Degree: 1 Resp: 388436.18 Card:
115569516.00 Bytes: 0
==============================================================================
Please access the attached hyperlink for an important electronic
communications disclaimer:
http://www.credit-suisse.com/legal/en/disclaimer_email_ib.html
==============================================================================
Hemant K Chitale
http://web.singnet.com.sg/~hkchital
and
http://hemantscribbles.blogspot.com
and
http://hemantoracledba.blogspot.com
"There is more to life than increasing its speed."
Mohandas Gandhi Quotes
: http://www.brainyquote.com/quotes/authors/m/mohandas_gandhi.html
--
http://www.freelists.org/webpage/oracle-l
- References:
- Optimizer sees index, but ignores it in access path decision process
- From: Baumgartel, Paul
Other related posts:
- » Optimizer sees index, but ignores it in access path decision process
- » Re: Optimizer sees index, but ignores it in access path decision process
- » RE: Optimizer sees index, but ignores it in access path decision process
Oracle 10.2.0.3 on Solaris. Table is range-partitioned on TCONTRACT_TRADE_DATE. Query is select min(TCONTRACT_TRADE_DATE) from ods.ods_tcontract;A single-column partitioned index (NUK_TCONTRACT_TRD_DT) exists on TCONTRACT_TRADE_DATE. Another (composite) index contains that column in position 2. Optimizer chooses the second index every time, even when a hint specifies the first one.
Optimizer (event 10053) trace shows awareness of the preferred index:
Index Stats::
Index: NUK_TCONTRACT_BUSDATE_CUSIP Col#: 52 20
USING COMPOSITE STATS
LVLS: 3 #LB: 713238 #DK: 384265 LB/K: 1.00 DB/K:
86.00 CLUF: 33203958.00
Index: NUK_TCONTRACT_CUSIP Col#: 20 35 57 1
USING COMPOSITE STATS
LVLS: 3 #LB: 955919 #DK: 112199564 LB/K: 1.00 DB/K:
1.00 CLUF: 43217198.00
Index: NUK_TCONTRACT_TRD_DT Col#: 35
USING COMPOSITE STATS
LVLS: 3 #LB: 402118 #DK: 80 LB/K: 5026.00 DB/K:
52071.00 CLUF: 4165752.00
But, in next section of trace, in which access paths are considered, NUK_TCONTRACT_TRD_DT does not appear at all (see below). How can that be?
Paul Baumgartel CREDIT SUISSE Information Technology Securities Processing Databases Americas One Madison Avenue New York, NY 10010 USA Phone 212.538.1143 paul.baumgartel@xxxxxxxxxxxxxxxxx <file://www.credit-suisse.com>www.credit-suisse.com SINGLE TABLE ACCESS PATH Table: ODS_TCONTRACT Alias: ODS_TCONTRACTCard: Original: 115569516 Rounded: 115569516 Computed: 115569516.00 Non Adjusted: 115569516.00
Access Path: TableScan
Cost: 7280284.59 Resp: 7280284.59 Degree: 0
Cost_io: 7028169.00 Cost_cpu: 193577124940
Resp_io: 7028169.00 Resp_cpu: 193577124940
Access Path: index (index (FFS))
Index: NUK_TCONTRACT_CUSIP
resc_io: 489938.00 resc_cpu: 20271467483
ix_sel: 0.0000e+00 ix_sel_with_filters: 1
Access Path: index (FFS)
Cost: 516339.64 Resp: 516339.64 Degree: 1
Cost_io: 489938.00 Cost_cpu: 20271467483
Resp_io: 489938.00 Resp_cpu: 20271467483
Access Path: index (index (FFS))
Index: UK_TCONTRACT_TICKER
resc_io: 364308.00 resc_cpu: 18525881475
ix_sel: 0.0000e+00 ix_sel_with_filters: 1
Access Path: index (FFS)
Cost: 388436.18 Resp: 388436.18 Degree: 1
Cost_io: 364308.00 Cost_cpu: 18525881475
Resp_io: 364308.00 Resp_cpu: 18525881475
Access Path: index (FullScan)
Index: NUK_TCONTRACT_CUSIP
resc_io: 955985.00 resc_cpu: 29247902618
ix_sel: 1 ix_sel_with_filters: 1
Cost: 864847.50 Resp: 864847.50 Degree: 1
Access Path: index (FullScan)
Index: UK_TCONTRACT_TICKER
resc_io: 710868.00 resc_cpu: 27502316610
ix_sel: 1 ix_sel_with_filters: 1
Cost: 649617.80 Resp: 649617.80 Degree: 1
****** trying bitmap/domain indexes ******
Access Path: index (FullScan)
Index: NUK_TCONTRACT_CUSIP
resc_io: 955985.00 resc_cpu: 29247902618
ix_sel: 1 ix_sel_with_filters: 1
Cost: 864847.50 Resp: 864847.50 Degree: 0
Access Path: index (FullScan)
Index: UK_TCONTRACT_TICKER
resc_io: 710868.00 resc_cpu: 27502316610
ix_sel: 1 ix_sel_with_filters: 1
Cost: 649617.80 Resp: 649617.80 Degree: 0
******** Begin index join costing ********
****** trying bitmap/domain indexes ******
Access Path: index (FullScan)
Index: NUK_TCONTRACT_CUSIP
resc_io: 955985.00 resc_cpu: 29247902618
ix_sel: 1 ix_sel_with_filters: 1
Cost: 864847.50 Resp: 864847.50 Degree: 0
Access Path: index (FullScan)
Index: UK_TCONTRACT_TICKER
resc_io: 710868.00 resc_cpu: 27502316610
ix_sel: 1 ix_sel_with_filters: 1
Cost: 649617.80 Resp: 649617.80 Degree: 0
Access Path: index (FullScan)
Index: UK_TCONTRACT_TICKER
resc_io: 710868.00 resc_cpu: 27502316610
ix_sel: 1 ix_sel_with_filters: 1
Cost: 649617.80 Resp: 649617.80 Degree: 0
******** End index join costing ********
Best:: AccessPath: IndexFFS Index: UK_TCONTRACT_TICKER
Cost: 388436.18 Degree: 1 Resp: 388436.18 Card:
115569516.00 Bytes: 0
==============================================================================Please access the attached hyperlink for an important electronic communications disclaimer:
http://www.credit-suisse.com/legal/en/disclaimer_email_ib.html ==============================================================================
- Optimizer sees index, but ignores it in access path decision process
- From: Baumgartel, Paul