Seguinte, o custo ** não ** te serve diretamente como parâmetro único 
pra se dizer se um SQL é bom ou ruim : ele é uma média ponderada de 
DIVERSOS fatores (não só do SQL mas das VARIÁVEIS de sessão também - 
mande um ALTER SESSION e o custo pode subir ou descer), e o algoritmo 
usado não é documentado pela Oracle, é interno. Então pra que serve 
ele ? Internamente o banco o usa pra "testar" o quanto vai custar cada 
possível tipo de acesso, pra nós cá fora só serve pra testar 
comportamento do CBO SE vc estiver trabalhando sempre com o mesmo SQL , 
ie :  vc tem um dado SQL, não gostou dele, daí aplica um HINT, um ALTER 
SESSION, re-coleta estatísticas, cria histogramas, e reexecuta O MESMO 
SQL, deve ter um custo diferente, aí sim vc pode usar o custo (tanto o 
custo total do SQL quanto o custo de cada paso do plano) como UM dos 
parâmetros pra se avaliar qualidade do SQL e da config do CBO. O que vc 
*** NUNCA **, de modo algum, pode fazer, é querer comparar o custo dum 
SQL x com o custo dum SQL Y, diferentes, pois NÂO é pra isso que o 
custo serve.  Para se comparar SQLs diferentes (tipo, em um vc tem, 
digamos, uma sub-query correlata e em outro vc tem join), e que 
OBVIAMENTE tragam o meso resultado!!,  o teu parâmetro principal 
deveria ser LIOs x Linhas Acessadas, ie, quantos blocos tiveram que ser 
lidos pra acessar cada linha.
  Otimização de SQLs (não só consultas, embora principalmente 
consultas) é um tema bem extenso, eu ** DUVIDO ** que vc encontre um 
simples tutorialzinho que te leve mais longe do que alguns "passos de 
bebê" nessa caminhada, mas vc acha alguns na net. O que eu recomendo 
mesmo são os livros :
  
  "Expert Oracle Database Architecture: 9i and 10g Programming 
Techniques and Solutions", de Thomas Kyte
  "Optimizing Oracle Performance", de Cary Millsap  
  "Oracle SQL High-Performance Tuning (2nd Edition)", de Guy Harrison
  
 a idéia do livro do TK é vc conhecer features do banco que podem 
diminuir seus LIOs (como Analytics, por exemplo), o do CM é vc aprender 
efetivamente o que são LIOs, como uso tkprof, waits, etc, e o do GH, 
embora seja antigo e esteja começando a mostra a idade (só fala de 
banco 8i) ainda é um dos melhores e mais didáticos pra se explicar o 
que é um join, quais tipos existem, como alterar logicamente SQLs, etc.
 
 []s
 
  Chiappa
  
--- Em [email protected], Rodrigo Cavalcante 
<[EMAIL PROTECTED]> escreveu
>
>  Srs.
>  
>     Estou fazendo otimização de sql, no banco de dados, gostaria de
> saber como o oracle faz o cálculo do parâmetro COST, sei que, se esse
> valor for alto a query vai demorar mais e se for baixo será mais 
rápido,
> qual o melhor valor dele, alguém tem um tutorial para fazer otimização
> de consultas?
>  
> Att.
>  
> Rodrigo Cavalcante
> 
> 
> [As partes desta mensagem que não continham texto foram removidas]
>






--------------------------------------------------------------------------------------------------------------------------
Atenção! As mensagens deste grupo são de acesso público e de inteira 
responsabilidade de seus remetentes.
Acesse: http://www.mail-archive.com/[email protected]/ 
--------------------------------------------------------------------------------------------------------------------------__________________________________________________________________

Este Grupo recebe o apoio da SQL Magazine - www.devmedia.com.br/sqlmagazine 
__________________________________________________________________
O grupo Oracle_br não aceita anexos. Quando oferecer algum arquivo, tenha o 
link do mesmo para evitar trafego(pedidos) desnecessário. 
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