Tem como postar o plano de execução?
o idtransacao é varchar2 e voce está comparando com number, isso faz
conversão implícita. Então vamos ver o que o Oracle está fazendo!

On 9/21/07, camargodba <[EMAIL PROTECTED]> wrote:
>
>   Olá pessoal.
>
> Preciso de um conselho/orientação para melhorar uma consulta simples.
>
> Realizo uma consulta simples para retornar uma única linha em uma
> table com 26 milhões de registros, só que esta demorando 3 minutos.
>
> Exemplo de comando:
>
> SELECT IDTRANSACAO FROM TRANSACAO WHERE idtransacao =
> 07600400040007100003471145053517;
>
> A table tem a seguinte estrutura
>
> IDTRANSACAO VARCHAR2(33)- NOT NULL - PRIMARY KEY
> IDORIGEM NUMBER(15) - NOT NULL
> COBRANCA NUMBER(1) - NOT NULL
> ...
>
> Sei que ao definir uma coluna como PRIMARY KEY, automaticamente o
> Oracle cria um Index para ela.
>
> Segue o Index que foi criado automaticamente...
>
> CREATE UNIQUE INDEX XPKTRANSACAO ON TRANSACAO
> (IDTRANSACAO)
> LOGGING
> TABLESPACE TESTE
> PCTFREE 10
> INITRANS 2
> MAXTRANS 255
> STORAGE (INITIAL 256M
> NEXT 25M
> MINEXTENTS 1
> MAXEXTENTS 2147483645
> PCTINCREASE 0
> BUFFER_POOL DEFAULT
> )
> NOPARALLEL;
>
> Executei o comando ALTER INDEX XPKTRANSACAO DEALLOCATE UNUSED; para
> desalocar espaço não utilizado no indice, com isso consegui ganhar
> mais 10 segundos na consulta.
>
> Neste caso tem como eu conseguir uma melhor performance na consulta???
>
> Esta consulta é uma base para as demais funções do meu banco, porém é
> a responsavel pela demora do resultado.
>
> OS - Windows 2003 Server
> SGDB - Oracle 9.2
>
> Agradeço pela atenção...
>
> Até mais.
>
>  
>



-- 
Marcio Portes
Material Tecnico em Portugues - http://mportes.blogspot.com
Practical Learning Oracle     -
http://mportes.blogspot.com/2006/02/practical-learning-oracle.html


[As partes desta mensagem que não continham texto foram removidas]

Responder a