Gabriel, Estou com problemas semelhante ao seu .... também fiz igual a vc ... deletei as estatísticas apenas do índice que me interessava e o CBO passou a usa-lo ... inclusive com um custo muito menor ... tb não sei o que acontece e gostaria de saber ....se alguém da lista puder nos ajudar ...
Att. Rosiano -----Mensagem original----- De: oracle_br@yahoogrupos.com.br [mailto:[EMAIL PROTECTED] Em nome de Gabriel Hanauer Enviada em: quinta-feira, 23 de junho de 2005 13:59 Para: oracle_br@yahoogrupos.com.br Assunto: [oracle_br] DBMS_STATS Olá, Tenho uma tabela com aproximadamente 250 mil registros. Essa tabela possui 4 índices . 2 índices compostos com 2 colunas cada e 2 índices simples. Todas as colunas dos índices sao do tipo number, menos um índice simples que tem uma coluna char(1). O que acontece é que toda vez que faço uma consulta usando usando essa coluna char(1) na clausula where e que eu esteja selecionando qq outra coluna que nao esteja indexada, o CBO escolhe fazer um table access full. Isso acontece qdo eu coleto as estatisticas para essa tabela e seus indices. Se as estatisticas forem deletadas o CBO escolhe usar o indice. Já tentei coletar as estatisticas de várias maneiras. Sempre que possuo estatisticas no indice da coluna char(1) o CBO faz um table access full Abaixo vou colocar algumas informações. Se alguém puder me ajudar, agradeço. P.S.: Isso está acontecendo em várias consultas diferentes. SELECT a.cod_lote, a.string_folha FROM dfen_carga_batch a WHERE a.tipo_status = 'S' AND ROWNUM < 10 / Plano de Execução ---------------------------------------------------------- 0 SELECT STATEMENT Optimizer=CHOOSE (Cost=25549 Card=9 Bytes=5 472) 1 0 COUNT (STOPKEY) 2 1 TABLE ACCESS (FULL) OF 'DFEN_CARGA_BATCH' (Cost=25549 Ca rd=85811 Bytes=52173088) Estatística ---------------------------------------------------------- 0 recursive calls 0 db block gets 265402 consistent gets 265379 physical reads 0 redo size 246 bytes sent via SQL*Net to client 364 bytes received via SQL*Net from client 1 SQL*Net roundtrips to/from client 0 sorts (memory) 0 sorts (disk) 0 rows processed Alguns dados das estatisticas: Coletei de várias maneiras. exec sys.dbms_stats.gather_table_stats(ownname=>'CSC_MIGRA',tabname=>'DFEN_CARGA_BATCH',granularity=>'ALL',method_opt=>'FOR ALL COLUMNS SIZE 1', estimate_percent=>DBMS_STATS.AUTO_SAMPLE_SIZE,cascade=>TRUE, DEGREE=>2); analyze index CSC_MIGRA.XIE1DFEN_CARGA_BATCH compute statistics; exec sys.dbms_stats.gather_table_stats(ownname=>'CSC_MIGRA',tabname=>'DFEN_CARGA_BATCH',granularity=>'ALL',method_opt=>'FOR ALL INDEXED COLUMNS SIZE 3', estimate_percent=>DBMS_STATS.AUTO_SAMPLE_SIZE,cascade=>TRUE, DEGREE=>2); Dados sobre as estatisticas coletadas: Indices da tabela: NAME NUM_ROWS DISTINCT LEAF_BLOCKS CF LEVEL ALFBPKEY LA ------------------------------ ----------- ----------- ----------- ----------- ----------- ----------- ------------------- IX_DFEN_CARGA_BATCH 257433 257030 1108 257433 2 1 06/23/2005 11:48:18 XIE1DFEN_CARGA_BATCH 257433 3 467 257433 1 155 06/23/2005 11:47:39 XIE2DFEN_CARGA_BATCH 257433 1514 540 257433 2 1 06/23/2005 11:48:31 XPKDFEN_CARGA_BATCH 257433 257433 656 257433 2 1 06/23/2005 11:48:26 TABLE_NAME NUM_ROWS BLOCKS AVG_ROW_LEN SAMPLE_SIZE LA ------------------------------ ----------- ----------- ----------- ----------- ------------------- DFEN_CARGA_BATCH 257433 265635 5842 257433 06/23/2005 11:47:27 SQL> @colstats dfen_carga_batch COLUMN_NAME NUM_DISTINCT NUM_NULLS NUM_BUCKETS DENSITY ------------------------------ ------------ ----------- ----------- ----------- COD_CHAVE 255995 0 3 ,0000039279 COD_CHAVE_ANT 2969 254464 1 ,0003368137 COD_LOJA 5 0 3 ,2 COD_LOJA_ORIGINAL 492 0 1 ,0020325203 COD_LOTE 1514 0 3 ,000660502 COD_PRODUTO 11 0 1 ,0909090909 NUM_SEQ_REGISTRO 4506 0 3 ,0002219263 STRING_CARTAO 0 257433 1 0 STRING_CLI_BASE 164894 0 1 ,0000060645 STRING_CLI_CONJUGE 7 0 1 ,1428571429 STRING_CLI_EMPREGO 182749 0 1 5,47199E-06 STRING_CLI_EMP_SEC 58 0 1 ,0172413793 STRING_CLI_END 57779 0 1 ,0000173073 STRING_CLI_FONE 65724 0 1 ,0000152151 STRING_CLI_REFER 74060 0 1 ,0000135026 STRING_CONTRATO 256532 0 1 3,89815E-06 STRING_COOBRIGADO 0 257433 1 0 STRING_ERRO 21 250865 1 ,0476190476 STRING_FOLHA 0 257433 1 0 STRING_GARANTIA 2 257431 1 ,5 STRING_OBSERVACOES 0 257433 1 0 STRING_PESSOA_JUR 0 257433 1 0 TIPO_STATUS 3 0 1 ,3333333333 VAL_COMPRA 24156 0 1 ,0000413976 VAL_ENTRADA 3 0 1 ,3333333333 VAL_TAC 23 0 1 ,0434782609 Agora outra coisa estranha. Qdo deleto as estatisticas usando: exec sys.dbms_stats.delete_index_stats(ownname=>'CSC_MIGRA',indname=>'XIE1DFEN_CARGA_BATCH'); o CBO continua fazendo table access full mas qdo elemino as estatisticas usando: analyze index CSC_MIGRA.XIE1DFEN_CARGA_BATCH delete statistics; o CBO usa o indice, como mostrado no plano abaixo: SQL> analyze index CSC_MIGRA.XIE1DFEN_CARGA_BATCH delete statistics; Índice analisado. SQL> set autot on SQL> SELECT a.cod_lote, a.string_folha 2 FROM dfen_carga_batch a 3 WHERE a.tipo_status = 'S' 4 AND ROWNUM < 10 5 / não há linhas selecionadas Plano de Execução ---------------------------------------------------------- 0 SELECT STATEMENT Optimizer=CHOOSE (Cost=139 Card=9 Bytes=547 2) 1 0 COUNT (STOPKEY) 2 1 TABLE ACCESS (BY INDEX ROWID) OF 'DFEN_CARGA_BATCH' (Cos t=139 Card=85811 Bytes=52173088) 3 2 INDEX (RANGE SCAN) OF 'XIE1DFEN_CARGA_BATCH' (NON-UNIQ UE) (Cost=9 Card=85811) Estatística ---------------------------------------------------------- 0 recursive calls 0 db block gets 2 consistent gets 0 physical reads 0 redo size 246 bytes sent via SQL*Net to client 364 bytes received via SQL*Net from client 1 SQL*Net roundtrips to/from client 0 sorts (memory) 0 sorts (disk) 0 rows processed -- Gabriel Hanauer ______________________________________________________________________ Cancelar assinatura...: [EMAIL PROTECTED] Moderadores da lista....:Dorian Anderson Soutto [EMAIL PROTECTED] Fernanda Damous [EMAIL PROTECTED] Alisson Aguiar [EMAIL PROTECTED] ______________________________________________________________________ http://br.groups.yahoo.com/group/oracle_br/ ______________________________________________________________________ Sair da Lista...: [EMAIL PROTECTED] Links do Yahoo! Grupos ______________________________________________________________________ Cancelar assinatura...: [EMAIL PROTECTED] Moderadores da lista....:Dorian Anderson Soutto [EMAIL PROTECTED] Fernanda Damous [EMAIL PROTECTED] Alisson Aguiar [EMAIL PROTECTED] ______________________________________________________________________ http://br.groups.yahoo.com/group/oracle_br/ ______________________________________________________________________ Sair da Lista...: [EMAIL PROTECTED] Links do Yahoo! Grupos <*> Para visitar o site do seu grupo na web, acesse: http://br.groups.yahoo.com/group/oracle_br/ <*> Para sair deste grupo, envie um e-mail para: [EMAIL PROTECTED] <*> O uso que você faz do Yahoo! Grupos está sujeito aos: http://br.yahoo.com/info/utos.html