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