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