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]