Igor, I ran this query: select table_name, partition_name, last_analyzed from dba_tab_partitions where table_name= It did show every partition as being analyzed when this command - dbms_stats.gather_table_stats( 'schema', 'table',null, 25, degree=>8, cascade=>true ); - ran the last time SO I'm pretty sure that it does go over every partition. thank you Gene Gurevich "Igor Neyman" <ineyman@perceptr on.com> To Sent by: <genegurevich@xxxxxxxxxxxx> oracle-l-bounce@f cc reelists.org <oracle-l@xxxxxxxxxxxxx> Subject RE: dbms_stats.gather_table_stats 09/05/2008 02:31 PM Please respond to ineyman@perceptro n.com Gene, >collects stats for the whole table. That's what I meant. Did you check, if separate partitions have their statistics collected with this command? Probably not. Analyzing table (as a whole) and analyzing individual partitions is not the same. Look into USER_TAB_PARTITIONS and see if individual partitions have statistics collected for them with your first command. Igor -----Original Message----- From: oracle-l-bounce@xxxxxxxxxxxxx [mailto:oracle-l-bounce@xxxxxxxxxxxxx] On Behalf Of genegurevich@xxxxxxxxxxxx Sent: Friday, September 05, 2008 3:20 PM To: Igor Neyman Cc: oracle-l@xxxxxxxxxxxxx Subject: RE: dbms_stats.gather_table_stats Igor, My first command - dbms_stats.gather_table_stats( 'schema', 'table', null, 25, degree=>8, cascade=>true ); - collects stats for the whole table. I have replaced it with these two commands - exec dbms_stats.gather_table_stats( 'owner', 'table', 'part1', 25, degree=>8, cascade=>true ); exec dbms_stats.gather_table_stats( 'owner', 'table', 'part2', 25, degree=>8, cascade=>true ); - to only collect the stats on 2 partitions that may have been updated since the last run (instead of analyzing all 7 partitions). The first command ran in about 24 min. Two bottom commands ran in 26 minutes combined. What I don't understand is why analyzing the whole table took the same time as analyzing 2 partitions (out of 7) thank you Gene Gurevich "Igor Neyman" <ineyman@perceptr on.com> To <genegurevich@xxxxxxxxxxxx>, 09/05/2008 02:14 <oracle-l@xxxxxxxxxxxxx> PM cc Subject RE: dbms_stats.gather_table_stats Are you sure, that your first command collects statistics for separate partitions (and not just for the whole table)? Did you check partitions statistics? -----Original Message----- From: oracle-l-bounce@xxxxxxxxxxxxx [mailto:oracle-l-bounce@xxxxxxxxxxxxx] On Behalf Of genegurevich@xxxxxxxxxxxx Sent: Friday, September 05, 2008 3:01 PM To: oracle-l@xxxxxxxxxxxxx Subject: dbms_stats.gather_table_stats Hi everybody: I am running oracle 10.2.0.1. Once a week we have a analyze process run to gather stats on all the tables in the schema via commands like this one exec dbms_stats.gather_table_stats( 'schema', 'table', null, 25, degree=>8, cascade=>true ); Some of the tables are partitioned and we have 6 or 7 historical partitions which are not being updated anymore so I thought I would save time by restricting this command to only last two partitions: exec dbms_stats.gather_table_stats( 'owner', 'table', 'part1', 25, degree=>8, cascade=>true ); exec dbms_stats.gather_table_stats( 'owner', 'table', 'part2', 25, degree=>8, cascade=>true ); The partitions are roughly the same size. The indices are globally partitioned. The first command (analyze the whole table) took 25 minutes. Last two command combined - 27 min. Considering that there are 5 more patitions in the table, the math does not add up. What am I missing? thank you Gene Gurevich -- //www.freelists.org/webpage/oracle-l -- //www.freelists.org/webpage/oracle-l -- //www.freelists.org/webpage/oracle-l -- //www.freelists.org/webpage/oracle-l