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.



Responder a