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

 



Responder a