Hi All,

Agreed.. and it should behave that way i.e

if (cost of ind1 scan + then based on c1's selection table access for c3) > (direct 
table access for c1 and c1) then oracle will use FTS with cost based optimization.
So, w/o a hint that is expected.

But why it is not picking the index in my case i donot know.

Also, can optimizer_index_cost_adj help? Its 100 now. Also that affects the whole DB, 
so is there any way to set it for this particular query ?


Thanks for all the inputs.


Regards,
B S Pradhan





On Wed, 24 Dec 2003 Mike Spalinger wrote :
>The difference is that the first query never has to go to the table (because you're 
>selecting a constant 'x').  The second query has to go to the table to filter on c3.
>
>Mike
>
>anu wrote:
>>No.
>>  The index should get used. The query result for query 2 is a subset of  rows with 
>> ta.c1='val1' will get selected. Subset of query 1.
>>  So there is no need for a full table scan. The index can be used in the following 
>> way :
>>  1) Use index ind1 to get rows with ta.c1='val1' (which is query 1). This can 
>> definitely use an index.
>>2) Further filter using ta.c3 = 'val2'
>>  Now may be the index is not very selective and the optimizer is going in for a 
>> full table scan. What is the cardinality like? It is strange that  RULE or index 
>> hint is not taking it. Can you try a simple index(ta) hint or send your hint 
>> syntax.  Can you try the hint on another table to make sure hint is working. I do 
>> not know why hint should not work.
>>  Good luck.
>>
>>"Daniel W. Fink" <[EMAIL PROTECTED]> wrote:
>>
>>     You answered your own question.
>>
>>     ta.c3 is a nonindexed column, this means that the only way to
>>     satisfy the
>>     predicate is to perform a full table scan. Since this predicate
>>     condition forces
>>     a full table scan on ta, which will retrieve the ta.c1 column values
>>     at the same
>>     time, there is no need to use an index. In fact, an additional index
>>     access
>>     would decrease the query performance.
>>
>>     Daniel Fink
>>
>>     bhabani s pradhan wrote:
>>
>>      > Hi All,
>>      >
>>      > Merry Christmas to all.
>>      >
>>      > I have this interesting problem..
>>      >
>>      > For this query index ind1 on (c1,c2) columns is getting used.
>>      > SELECT 'x'
>>      > FROM tab ta
>>      > WHERE ta.c1='val1';
>>      > (gives index ind1 range scan)
>>      >
>>      > But for
>>      >
>>      > SELECT 'x'
>>      > FROM tab ta
>>      > WHERE ta.c1='val1'
>>      > AND ta.c3 = 'val2';
>>      > (gives FTS)
>>      > index ind1 is not being used. c3 is a nonindexed column.
>>      >
>>      > I have already tried index(ta ind1) , RULE hints.
>>      >
>>      > The table and the index are analyzed.
>>      >
>>      > What cud be the reason for that?
>>      >
>>      > Regards,
>>      > B S Pradhan
>>
>>     --     Please see the official ORACLE-L FAQ: http://www.orafaq.net
>>     --     Author: Daniel W. Fink
>>     INET: [EMAIL PROTECTED]
>>
>>     Fat City Network Services -- 858-538-5051 http://www.fatcity.com
>>     San Diego, California -- Mailing list and web hosting services
>>     ---------------------------------------------------------------------
>>     To REMOVE yourself from this mailing list, send an E-Mail message
>>     to: [EMAIL PROTECTED] (note EXACT spelling of 'ListGuru') and in
>>     the message BODY, include a line containing: UNSUB ORACLE-L
>>     (or the name of mailing list you want to be removed from). You may
>>     also send the HELP command for other information (like subscribing).
>>
>>!
>>
>>------------------------------------------------------------------------
>>Do you Yahoo!?
>>Free Pop-Up Blocker - Get it now 
>><http://us.rd.yahoo.com/slv/mailtag/*http://companion.yahoo.com/>
>
>
>-- Please see the official ORACLE-L FAQ: http://www.orafaq.net
>-- Author: Mike Spalinger
>  INET: [EMAIL PROTECTED]
>
>Fat City Network Services    -- 858-538-5051 http://www.fatcity.com
>San Diego, California        -- Mailing list and web hosting services
>---------------------------------------------------------------------
>To REMOVE yourself from this mailing list, send an E-Mail message
>to: [EMAIL PROTECTED] (note EXACT spelling of 'ListGuru') and in
>the message BODY, include a line containing: UNSUB ORACLE-L
>(or the name of mailing list you want to be removed from).  You may
>also send the HELP command for other information (like subscribing).

Reply via email to