O mais importante são mesmo os conceitos : se vc está os compreendendo, 
entendeu porque não faz sentido nem sequer pensar em indexar todas as colunas 
de uma tabela, entendeu (nas linhas gerais básicas citadas) o mecanismo do CBO, 
maravilha, isso é o importante...
 Sobre a investigação em questão, além de reforçar a necessidade de obter o 
plano de execução EXTENDIDO, com A-ROWs e E-ROWS (o plano de execução básico 
não serve de nada quando vc investiga planos diferentes para valores 
diferentes), seria Ótimo quando vc for re-executar as queries com o hint de 
gather stats para obter o plano extendido, Também pedir antes no sqlplus um SET 
TIME ON TIMING ON, para que a gente veja o tempo total gasto nos dois casos 
(via índice e via fts) para se receber todos os resultados no cliente, que no 
caso será o sqlplus.... 
  E repetindo um pouco, como tá a Qualidade das estatísticas ? Elas estão sendo 
coletadas de que modo, com que frequência ? A coleta é FOR ALL COLUMNS, ou FOR 
ALL INDEXED COLUMNS, ou o que ? Com qual SIZE ?? Este último ponto é Crítico, 
pois se vc tem uma distribuição Totalmente Irregular ( como parece ser o caso, 
já que CODCXA = '401609' vc diz que o COUNT retornou  12858 linhas e para o 
original CODCXA = '12345' na msg original retornava 3500 registros, quase 4x 
menos), é justamente o HISTOGRAMA gerado pelo SIZE que vai subsidiar a escolha 
do CBO para cada valor possível.... Pode valer a pena indicar um SIZE maior 
para essa coluna, se hoje vc está usando a opção SIZE AUTO e/ou não usa size 
nenhum...
  Além disso, vc necessariamente deve olhar o armazenamento interno (físico e 
lógico) para essa tabela : eu tenho um feeling, alguma coisa me diz que o CBO 
pode estar superestimando a performance do FTS, que na prática pode estar sendo 
Reduzida por causa de chaining rows, white space, tamanho de extents largamente 
diferentes entre si, grau de paralelismo inadequado/inexistente.... Dá uma 
pesquisadinha nisso, plz...

  E finalmente : ** necessariamente ** o HINT de INDEX deveria ter funcionado 
causando um index range scan : mostra pra gente a sintaxe que vc usou, de 
repente tá com erro e por isso o hint não foi aceito...

[]s

  Chiappa

Responder a