Ver Mensaje Individual
  #7 (permalink)  
Antiguo 18/08/2008, 11:40
carancor
 
Fecha de Ingreso: agosto-2008
Mensajes: 6
Antigüedad: 16 años, 3 meses
Puntos: 1
Respuesta: optimizar una consulta

Cita:
Iniciado por gnzsoloyo Ver Mensaje
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