Ver Mensaje Individual
  #1 (permalink)  
Antiguo 01/03/2011, 06:13
oscaral
 
Fecha de Ingreso: marzo-2011
Mensajes: 1
Antigüedad: 13 años, 1 mes
Puntos: 0
Busqueda Optimización de consulta con 1 sola tabla

Hola, ¿qué tal? Escribo este mensaje porque estoy un tanto desesperadillo

Tengo la siguiente tabla con fechas, nombres de aplicaciones y cantidades de usuarios:

------------------------
CREATE TABLE [dbo].[TABLA_APLICACIONES](

[FECHA] [datetime] NOT NULL,

[APLICACION] [varchar](50) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,

[USUARIOS] [int] NULL

) ON [PRIMARY]
---------------


Necesito tener la suma de usuarios para dos grupos distintos de aplicaciones, en cada momento existente y para un día concreto (en el ejemplo uso getdate(), pero es la parte que parametrizo)

La query de abajo funciona, pero tarda unos 5 minutos en generar la respuesta,
y eso deja colgados ciertos procesos. La tengo que hacer mucho más rápidamente.

¿Alguien sabe de alguna alternativa más rápida?

Muchas gracias a todos


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


SELECT SUBSTRING(LEFT(CONVERT(CHAR(8), MAIN.FECHA, 108), 5), 1, 5) AS HORAS,

(SELECT SUM(PAR.USUARIOS)

FROM dbo.TABLA_APLICACIONES PAR

WHERE PAR.FECHA = MAIN.FECHA

AND (PAR.APLICACION LIKE 'APLICACION_SSO_PAR' OR

PAR.APLICACION LIKE 'APLICACION_PA_SSO_PAR' OR

PAR.APLICACION LIKE 'APLICACION_PB_SSO_PAR')

GROUP BY PAR.FECHA

)

AS USUARIOS_PAR,

(

SELECT SUM(IMPAR.USUARIOS)

FROM dbo.TABLA_APLICACIONES IMPAR

WHERE IMPAR.FECHA = MAIN.FECHA

AND (IMPAR.APLICACION LIKE 'APLICACION_SSO_IMPAR' OR

IMPAR.APLICACION LIKE 'APLICACION_PA_SSO_IMPAR' OR

IMPAR.APLICACION LIKE 'APLICACION_PB_SSO_IMPAR')

GROUP BY IMPAR.FECHA)

AS USUARIOS_IMPAR



FROM dbo.TABLA_APLICACIONES MAIN

WHERE CONVERT(CHAR(12), MAIN.FECHA, 103) = CONVERT(CHAR(12), getdate(), 103)

GROUP BY MAIN.FECHA

ORDER BY MAIN.FECHA

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

Última edición por oscaral; 01/03/2011 a las 06:19 Razón: aclaración de lo que necesito