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.