Amigo,

Faz assim, que seu resultado será o mesmo com uma performance muito melhor:

WHERE DATA >= TRUNC(SYSDATE) AND DATA < TRUNC(SYSDATE)+1

Outra possibilidade seria você criar um índice baseado em função:

CREATE INDEX I1 ON TABELA ( TRUNC(DATA) );

Desta maneira, você poderia deixar a sua query inalterada, com "WHERE 
TRUNC(DATA) = TRUNC(SYSDATE)" que o índice seria utilizado e a performance 
seria muito boa.

[]s

Eduardo Claro


-----Original Message-----
From: oracle_br@yahoogrupos.com.br [mailto:[EMAIL PROTECTED] On Behalf Of Jean 
Carlo
Sent: quarta-feira, 10 de setembro de 2008 10:26
To: Grupo Oracle
Subject: [oracle_br] select muito lento.

Bom dia, pessoal.

Tenho um select da seguinte forma:
select * from tabela
where trunc(data) = trunc(sysdate);

onde tabela tem quase 6 milhões de registros, tenho um index no campo data, sei 
que usando o trunc é usado o mesmo não utiliza o index gostaria de saber se tem 
como melhorar a performece usando trunc.
Pois usando where data > sysdate-1 o mesmo me traz as ultimas 24hrs e só qro do 
dia corrente, e dessa forma sei que o index é utilizado.

Versão do meu BD: 9.2.0.5.0.

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


------------------------------------

--------------------------------------------------------------------------------------------------------------------------
>Atenção! As mensagens do grupo ORACLE_BR são de acesso público e de inteira 
>responsabilidade de seus remetentes.
Acesse: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/ 
--------------------------------------------------------------------------------------------------------------------------
>Funções, Procedures, propostas de emprego - O GRUPO ORACLE_BR TEM SEU PROPRIO 
>ESPAÇO! VISITE: http://www.oraclebr.com.br/  
------------------------------------------------------------------------------------------------------------------------
 Links do Yahoo! Grupos


Responder a