Não utilize o between

[ad#texto]
Essa é para aqueles que são desenvolvedores Oracle, principalmente no PL/SQL, suponha que alguém lhe pergunte como consultar uma tabela levando em consideração um intervalo de data, como você faria isso?

Seria algo semelhante a isso:

select *
from suaTabela
where campoData between '010210' and '010310';

Se você faz como o exemplo acima lhe digo que você acertou e errou ao mesmo tempo.

Acertou pois esse é a forma mais elegante de realizar a tarefa.

Você errou pois essa forma mina a performance da sua consulta, está certo que uma consulta tão simples como o exemplo acima essa quebra de performance nem seria percebida pelo Oracle, porém em um ambiente crítico com uma consulta mais complexa isso pode comprometer todo o sucesso da sua aplicação.

O PL/SQL da Oracle possui uma séria de truques, para o caso acima o ideal é que a consulta seja realizada da seguinte forma:

select *
from suaTabela
where campoData < '010210'
 and campoData > '010310';

Notaram que a forma acima embora mais “feia” é a maneira que irá refletir mais performance para o Oracle.

Petter Rafael

Desenvolvedor Web atua com as tecnologias Java e PHP apoiadas pelos bancos de dados Oracle e MySQL. Além dos ambientes de desenvolvimento acima possuiu amplo conhecimento em servidores Apache/Tomcat, Photoshop, Arte & Foto, Flash e mais uma dezena de ferramentas e tecnologias emergentes. Atualmente colabora com o Viablog escrevendo sobre programação e tecnologia.