terça-feira, 4 de novembro de 2008

Pesquisa por ano e mês em sql

Em uma tabela com um campo do tipo date, para fazer uma consulta apenas por mês ou apenas por ano é comum se utilizar as funções MONTH e YEAR:

select * from tabela where MONTH(campo)=2;

select * from tabela where YEAR(campo)=2008;

Porém este tipo de pesquisa sempre gera um TABLE SCAN (uma varredura em toda a tabela), ignorando os índices que por ventura existam e retardando em muito o tempo de resposta.

Uma maneira de fazer a mesma coisa e de forma mais eficiente segue abaixo:

WHERE campo BETWEEN '2008-01-01' AND '2008-01-31'

WHERE campo BETWEEN '2008-01-01' AND '2008-12-31'

Nenhum comentário: