A pergunta é:
Vc ja analisou os dados da estatistica.
Provavelmente a estatistica esteja dizendo que fazer uma consulta full scan 
seja de menor custo do que fazer uma consulta usando o indice da coluna de 
char(1).
Qual o percentual de linhas retornadas ao fazer acesso pelo indice ?


Renan Medeiros
Coordenador de Suporte/Treinamento/Pré-venda
Unimix Tecnologia Ltda
0 xx 61 9994 0586
0 xx 61 3201 8888

  ----- Original Message ----- 
  From: Rosiano Vieira de Sales 
  To: [email protected] 
  Sent: Friday, June 24, 2005 4:34 PM
  Subject: RES: [oracle_br] DBMS_STATS


  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: [email protected] [mailto:[EMAIL PROTECTED] Em nome de Gabriel 
Hanauer
  Enviada em: quinta-feira, 23 de junho de 2005 13:59
  Para: [email protected]
  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

    a.. Para visitar o site do seu grupo na web, acesse:
    http://br.groups.yahoo.com/group/oracle_br/
      
    b.. Para sair deste grupo, envie um e-mail para:
    [EMAIL PROTECTED]
      
    c.. O uso que você faz do Yahoo! Grupos está sujeito aos Termos do Serviço 
do Yahoo!. 



[As partes desta mensagem que não continham texto foram removidas]



______________________________________________________________________

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