Cita:
Iniciado por gnzsoloyo
Código:
SELECT *
FROM TABLA1
WHERE (MONTH(CampoFecha) = 3 AND YEAR(CampoFecha) = 2008);
...prueba.
Respecto a lo anterior, cuidado con los select * ya que el indice es optimo cuando haces una consulta bien acotada, tu consulta recorre todo un mes por lo que el calculo interno del SQL evalua si es mas rapido traer por indice o hacer un fullscan, cuando hay select * la mayoria de las veces hace un fullscan, por eso hay que sacarlo.
Por otro lado, es necesario hacer mantencion a tus bases, esto mejora tu performance, es decir, Regenerar estadisticas, reorganizar y desfragmentar indices y por ultimo recompilar procedimientos, deben ser estas tres cosas para que realmente se optimice. por otra parte bueno sería que tu consulta estubiese como SP y no como una query normal.
Ejemplo:
CREATE PROCEDURE retornadatos @fecha as datetime
AS
SET NOCOUNT ON
SELECT
a,
b,
c
FROM
Tabla1 (nolock)
WHERE
MONTH(@fecha) = 3 AND
YEAR(@fecha) = 2008
Esto ayudara a la que la primera vez que se ejecute la consulta demore por la compilación del SP pero posteriormente lo hara considerablemente mas rapido.
Saludos
Claudio Arancibia