Eu tava relendo a minha Resposta, não sei se ficou Claro, deixe-me refrasear : 

a) embora não haja uma Fórmula, uma "conta" exata e precisa que vc possa fazer 
para 'certificar' que o banco em si está OK, é Possível vc fazer uma Avaliação 
da performance atual do banco e analisar se ela tá próxima do que seria 
esperado para o seu tipo/classe de hardware e de utilização, usando tools como 
as que indiquei ou equivalentes, ALÉM de testes empíricos, tipo escrever 
algumas consultas que acessem via índice E via full table scan algumas tabelas 
escolhidas do teu Aplicativo e ver se isso roda razoavelmente rápido ou não...
  Também ** sempre ** vale a pena, também, vc pegar duas ou três tabelas 
"grandes" e "importantes" da sua Aplicação, escrever uns SQLs que façam JOINs 
nelas (informando direitinho as chaves, colocando valores de Filtros factíveis, 
etc) e confirmar que esse SQL é executado de maneira aceitável...

b)  embora não haja uma Fórmula, uma "conta" exata e precisa que vc possa fazer 
para 'certificar' que um dado SQL é de boa qualidade, bem escrito e funcionando 
com máxima eficiência, há diversos Indicadores que vc pode obter, como 
comparação de blocos lidos x linhas retornadas e coisas assim... 
  Outro indicador ** precioso ** é o PLANO DE EXECUÇÃO do SQL em análise, mas 
isso Sabendo-se volumes e utilização das tabelas envolvidas : por exemplo, se 
vc ver um Plano fazendo leituras em quase a totalidade de uma tabela de 
Histórico, cujos dados não mudam quase nunca, é Óbvio que esse SQL pode ser 
melhorado... Normalmente a dificuldade aqui não é técnica, mas sim a falta de 
Conhecimento da aplicação para se Entender se a tabela x ou y é 'histórico', 
'transacional' ou o que...
  Outra situação ** COMUM ** nesse sentido é um plano onde vc vê a mesma tabela 
sendo usada Múltiplas Vezes no mesmo SQL (normalmente em sub-queries) - isso é 
um indicador ** DIRETO ** de Ineficiência, pois mostra que a mesma tabela que 
já tinha sido lida noutra parte do SQL vai TER QUE SER lida novamente - via de 
regra isso é Horroroso, é praticamente certo que tal SQL possa ser re-escrito 
de uma maneira que faça uma só leitura na tabela, provavelmente 'guardando' 
valores previamente lidos pra comparar com valores atualmente lidos, via 
funções analíticas, cláusula WITH, Global temporary table ou quetais... 
  
  []s
  
    Chiappa
  • ... Carlos Cesar Aparecido Da Silva carlos.sil...@jbsfoods.com.br [oracle_br]
    • ... jlchia...@yahoo.com.br [oracle_br]
      • ... jlchia...@yahoo.com.br [oracle_br]

Responder a