Rodrigo.

você tem indice na GCCUSTO.CODCCUSTO ?
como você faz a coleta de estatística nas tabelas e
como é a seletividade desta coluna ?




--- Rodrigo Cavalcante <[EMAIL PROTECTED]>
escreveu:


---------------------------------
Valeu luis pela atenção, a configuração do hardware é
o seguinte: 02
processadores intel xeon dual 3.20 ghz, 2 GB de RAM,
04 discos de 34 GB, SO:
Red Hat Enterpise Linux 4.0 AS, Oracle 9.2.0.4.0.

Estou mandando o sql abaixo, como estudo de caso pra
mim entender melhor o a
otimização:

SELECT GFILIAL.NOMEFANTASIA AS FILIAL,

CLCTLOTE.DOCUMENTO,

'LANC' AS COD_TIPO_DOCUMENTO,

'LANCAMENTO SALDUS' AS TIPO_DOCUMENTO,

TO_CHAR(CLCTLOTE.DATA,'YYYY') AS ANO_CONTAB,

TO_CHAR(CLCTLOTE.DATA,'MM') AS MES_CONTAB,

TO_CHAR(CLCTLOTE.DATA,'DD') AS DIA_CONTAB,

TO_CHAR(CLCTLOTE.DATA,'YYYY') AS ANO_EMISSAO,

TO_CHAR(CLCTLOTE.DATA,'MM') AS MES_EMISSAO,

TO_CHAR(CLCTLOTE.DATA,'DD') AS DIA_EMISSAO,

SUBSTR(CRATEIOLC.CODCONTA,1,5) AS COD_GRUPO,

 (SELECT CCONTA.DESCRICAO FROM CCONTA WHERE
CCONTA.CODCONTA =
SUBSTR(CRATEIOLC.CODCONTA,1,5)) AS GRUPO_CONTA,

CRATEIOLC.CODCONTA AS COD_CONTA,

 CCONTA.DESCRICAO AS DES_CONTA,

'NÃO CONSTA' AS FORNECEDOR,

'NÃO CONSTA' AS USR_APROVADOR,

CLCTLOTE.USUARIO AS USR_EMITENTE,

(CASE SUBSTR(CRATEIOLC.CODGERENCIAL,1,1)

                                WHEN '1' THEN
'PRESIDENCIA'

                                WHEN '2' THEN 'DIRAD'

                                WHEN '3' THEN 'DIROP'

                                WHEN '4' THEN 'DIRCO'

                                WHEN '9' THEN 'RATEIO'

                END) AS DES_DIR,

 SUBSTR(CRATEIOLC.CODGERENCIAL,1,3) AS COD_GER,

 (SELECT DISTINCT NOME FROM GCCUSTO               
WHERE GCCUSTO.CODCCUSTO=
SUBSTR(CRATEIOLC.CODGERENCIAL,1,3) AND
LENGTH(CRATEIOLC.CODGERENCIAL)>1 AND
GCCUSTO.CODCOLIGADA=1) AS DES_GER,

CRATEIOLC.CODGERENCIAL AS COD_CCUSTO,

GCCUSTO.NOME AS DES_CCUSTO,

'00.00.00000' AS COD_PRD,

TRIM(CLCTLOTE.COMPLEMENTO) AS DES_PRD,

(CRATEIOLC.VLRDEBITO-CRATEIOLC.VLRCREDITO) AS VALOR

 FROM CRATEIOLC

JOIN CLCTLOTE ON (CRATEIOLC.LCTREF = CLCTLOTE.LCTREF)

JOIN GFILIAL ON (GFILIAL.CODFILIAL =
CLCTLOTE.CODFILIAL AND

                 GFILIAL.CODCOLIGADA =
CLCTLOTE.CODCOLIGADA)

JOIN CCONTA ON (CCONTA.CODCOLIGADA =
CRATEIOLC.CODCOLIGADA AND

                CCONTA.CODCONTA = CRATEIOLC.CODCONTA )

JOIN GCCUSTO ON (GCCUSTO.CODCCUSTO =
CRATEIOLC.CODGERENCIAL)

WHERE CRATEIOLC.CODLOTE <> 0

AND (CLCTLOTE.INTEGRAAPLICACAO IN ('C','I0') OR
CLCTLOTE.INTEGRAAPLICACAO IS
NULL)

AND CRATEIOLC.CODCONTA LIKE '5%'

Resultado do Explain:

 SELECT STATEMENT, GOAL = CHOOSE
53                1                225
 TABLE ACCESS BY INDEX ROWID                RM        
       CCONTA
2                1                38

  INDEX RANGE SCAN      RM               
CXCTACODCONTA
1                1

 FILTER

  TABLE ACCESS BY INDEX ROWID                RM       
        GCCUSTO
1                1                40

   INDEX UNIQUE SCAN      RM                PKGCCUSTO
361                                          INDEX

 HASH JOIN
53                1                225

  NESTED LOOPS
50                1                188

   NESTED LOOPS
49                1                166

    NESTED LOOPS
47                2                250

     TABLE ACCESS FULL      RM                CLCTLOTE
43                2                168

     TABLE ACCESS BY INDEX ROWID                RM    
           CRATEIOLC
2                1                41

      INDEX RANGE SCAN      RM               
CXCRATEIOLCTREF
1                1

    TABLE ACCESS BY INDEX ROWID                RM     
          CCONTA
1                1                41

     INDEX UNIQUE SCAN      RM                PKCONTA
1                                              INDEX

   TABLE ACCESS BY INDEX ROWID                RM      
         GFILIAL
1                1                22

    INDEX UNIQUE SCAN      RM                PKGFILIAL
1                                              INDEX

  TABLE ACCESS FULL      RM                GCCUSTO
2                361                13357

----- Original Message -----
From: "Luis Claudio Arruda Figueiredo"
<[EMAIL PROTECTED]>
To: <[email protected]>
Sent: Wednesday, April 12, 2006 11:28 AM
Subject: Re: [oracle_br] Cost


> É um bom indicador mas infelismente não é só com
este
> parâmetro que funciona, depende de outras "N"
> variáveis.
> Como:
> init<sid>.ora, hardware(disco "RPM", Controladora,
> Processador, Memória, Esta em Fibra ou placa giga
> ect...) fragmentação da tabela e indice, tipo de
> acesso (hash, merge, nestedloop) utilização de
hints,
> sua SGA, versão do banco etc...
>
> Mande um exemplo da query ou proc ou package que
você
> quer otimizar, assim como versão do banco e
> informações de hardware e so.
>
> abs,
>
> Luis Figueiredo.
>
>
> --- 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 Termos do Serviço do Yahoo!.
>
>
>
>
>
>
_______________________________________________________
> Abra sua conta no Yahoo! Mail: 1GB de espaço,
alertas de e-mail no celular
e anti-spam realmente eficaz.
> http://br.info.mail.yahoo.com/
>
>
>
--------------------------------------------------------------------------
------------------------------------------------
> 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
>
>
>
>
>
>
>
>


--------------------------------------------------------------------------------------------------------------------------
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 Termos do Serviço do Yahoo!.



__________________________________________________
Faça ligações para outros computadores com o novo Yahoo! Messenger 
http://br.beta.messenger.yahoo.com/ 


--------------------------------------------------------------------------------------------------------------------------
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