Chiappa, obrigado pela informação.
Verifiquei na view dba_tab_statistics que essa tabela estava bloqueada para
estatísicas, desbloquiei e rodei a estatística e aumentou muito a velocidade da
consulta, mas ainda posso melhorar mais. Descobri que o access FULL na tabela
de 2 milhoes e 500 mil registros se dá pq todos os registros possuem a coluna
ID_PRODUTO=5(WHERE SSF.ID_PRODUTO = 5 AND SSF.NSC 0;) , irei conversar com o
pessoal para saber a causa de todos os registros dessa tabela possuirem o mesmo
valor do ID_PRODUTO.
De: J. Laurindo Chiappa jlchia...@yahoo.com.br
Para: oracle_br@yahoogrupos.com.br
Enviadas: Quarta-feira, 20 de Fevereiro de 2013 10:44
Assunto: [oracle_br] Re: Ajuda Tuning query
Bom, sem nenhuma análise muito profunda (só uma passada de vista), o que parece
é que quando vc faz o CASE vc está acessando dados da tabela C e ** não ** usa
em lugar nenhum mais do SELECT dados da tabela ST, ENQUANTO na versão sem CASE
vc faz referência direta às colunas da ST no SELECT via ,ST.DESCR_STATUS AS
DESCR_STATUS : assim sendo, a impressão que temos é que o acesso à essa tal ST
é que está causando mais demora, TALVEZ por estatísticas de má qualidade nessa
tabela/coluna... Obtenha um plano de execução COMPLETO para as duas versões, **
inclusive ** com as colunas A-ROWS e E-ROWS para se poder avaliar o estimado e
o obtido, SE houver diferença gritante estatisticamente entre os dois, se pode
chutar mesmo estatísticas incompletas, falta ou aumento de buckets no
histograma, por aí...
[]s
Chiappa
--- Em oracle_br@yahoogrupos.com.br, Rafael Mendonca escreveu
Pessoal, bom dia.
Achei um caso estranho em uma query, na segunda coluna do SELECT, quando eu a
coloco para retornar o valor da tabela, a consulta demora bastante...
Mas quando eu substituo a segunda coluna por um CASE, ela me traz na
velocidade de uma bala, alguém saberia explicar o motivo ?
Estou com esse probleminha, tentando ajustar a query sem o CASE, só que
quando executo a consulta, demora em torno de 2 minutos.
Segue a query sem o CASE e seu plano de execução:
http://sql.nopaste.dk/p21339
Segue a query com o CASE e seu plano de execução:
http://sql.nopaste.dk/p21340
Obs: me refiro a segunda coluna do SELECT DESCR_STATUS
Já tentei criar um índice para as 2 colunas do filtro da tabela MOVIMENTO_SSF
que melhorou em torno de 30 segundos, mas eu acho que não seja a solução.
SELECT Count(*) FROM MOVIMENTO_SSF -- 2.456.384 registros
SELECT Count(*) FROM STATUS_PESSOA -- 9 registros
[As partes desta mensagem que não continham texto foram removidas]
[As partes desta mensagem que não continham texto foram removidas]