i found numerous cases(I dont have them in front of me) when fast full scan incurred far more logical I/Os than an index range scan.
I found this particularly for oltp type get 10 records transactions. However, I forced an index_ffs once and it increased my logical I/Os by 30% but decreased my response time by about 50%. now this is non-scalable. Must be my disk access speeds as you said. It was for a batch process. unfortunately I didnt hold onto my cases. any comments on the 'full scan'. I rarely have seen oracle make good use of this type of index scan. > > From: David Hau <[EMAIL PROTECTED]> > Date: 2004/01/27 Tue AM 11:14:27 EST > To: Multiple recipients of list ORACLE-L <[EMAIL PROTECTED]> > Subject: Re: When does Oracle use 'Index Fast Scan' > > This is where the access time of your disks (or SAN) makes a difference. > If your disks have really fast access time, then a random-access > pattern would not cause much performance degradation and so a range scan > would not be slow at all, even though it's traversing the b-tree index > structure. If you're only striping together disks with relatively slow > access time (e.g. using a striped IDE disk array), then you have high > throughput but not that fast an access time. In this case, fast full > index scan would be much faster than an index range scan because the > fast full scan reads the blocks sequentially and a sequential disk I/O > requires only positioning the head once (assuming the disk is not > fragmented). The rest of the time depends on the throughput. If you > stripe together a large enough number of IDE disks, then your throughput > is great but your access time is still the access time of a single IDE > drive which is not that fast. > > This is assuming you need to do a physical I/O to obtain the blocks. Of > course, if the blocks already reside in the buffer cache, then it's a > different story. > > Regards, > Dave > > > [EMAIL PROTECTED] wrote: > > > btw, in many cases range scan is faster than a fast full scan. Range scan > > recursively hits the nodes that are needed and skips the ones that are not. So it > > reads less blocks. > > > > So if you are looking for a 'range' or a specific value, range scan beats fast > > full scan most of the time. Less Logical and Physical I/Os. > > > > test it and hint your queries > > > > > > > >>From: David Hau <[EMAIL PROTECTED]> > >>Date: 2004/01/26 Mon PM 10:34:25 EST > >>To: Multiple recipients of list ORACLE-L <[EMAIL PROTECTED]> > >>Subject: Re: When does Oracle use 'Index Fast Scan' > >> > >>Correction: the Index Range Scan can be parallelized when it involves > >>multiple partitions. > >> > >>- Dave > >> > >> > >>David Hau wrote: > >> > >> > >>>I assume you're talking about the Fast Full Index Scan. This is used > >>>when the index contains all the columns necessary to answer the query. > >>> > >>>It's faster than a Full Table Scan because indexes are smaller than > >>>entire rows, so a Fast Full Index Scan will scan fewer blocks than a > >>>Full Table Scan. > >>> > >>>It's faster than an Index Range Scan firstly because Fast Full Index > >>>Scan scans the blocks in sequential order, whereas the Index Range > >>>Scan traverses the B-tree index structure in scanning the blocks, > >>>resulting in a random access I/O pattern which is slower. This is > >>>also why the Oracle documentation says that with a Fast Full Index > >>>Scan, the result is not sorted by the index key (because the result is > >>>not obtained by traversing the index structure.) Secondly, the better > >>>performance is also because the Fast Full Index Scan uses multiblock > >>>reads and is capable of parallel operation, whereas the Index Range > >>>Scan is capable of neither. > >>> > >>>Regards, > >>>Dave. > >>> > >>> > >>> > >>>[EMAIL PROTECTED] wrote: > >>> > >>> > >>>>I have found that the vast majority of time that Oracle chooses this > >>>>method, my statistics are stale and the query is sub-optimal. One > >>>>time, Oracle changed from a 'range scan' to this type of scan with a > >>>>FIRST_ROWS hint and this reduced performance. > >>>> > >>>>This is just a full scan of the index, one block at a time right? > >>>>When would this ever be superior to a Fast Full Scan or a Range Scan? > >>> > >>> > >>> > >>-- > >>Please see the official ORACLE-L FAQ: http://www.orafaq.net > >>-- > >>Author: David Hau > >> 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). > >> > > > > > > -- > Please see the official ORACLE-L FAQ: http://www.orafaq.net > -- > Author: David Hau > 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). > -- Please see the official ORACLE-L FAQ: http://www.orafaq.net -- Author: <[EMAIL PROTECTED] 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).