Evolution 1.11.1.1
SQL Server
Tengo una implementación, en donde el Usuario tiene que esperar alrededor de 2 minutos cada vez que va a la página de Inicio de Evolution (ya sea porque está iniciando sesión, o porque está en algún formulario y decide dar clic a Inicio).
En ambiente de pruebas, he aplicado Profile de SQL y encontré la siguiente sentencia SQL:
exec sp_executesql N'SELECT
[Project1].[nbp_codemp] AS [nbp_codemp],
[Project1].[bpr_codpro] AS [bpr_codpro],
[Project1].[nbp_codbpr] AS [nbp_codbpr],
[Project1].[pro_descripcion] AS [pro_descripcion],
[Project1].[C1] AS [C1],
[Project1].[pro_fecha_ejecucion] AS [pro_fecha_ejecucion],
[Project1].[bpr_resultado] AS [bpr_resultado]
FROM ( SELECT
[Extent1].[nbp_codbpr] AS [nbp_codbpr],
[Extent1].[nbp_codemp] AS [nbp_codemp],
[Extent3].[bpr_codpro] AS [bpr_codpro],
[Extent3].[bpr_resultado] AS [bpr_resultado],
[Extent4].[pro_descripcion] AS [pro_descripcion],
[Extent4].[pro_fecha_ejecucion] AS [pro_fecha_ejecucion],
CAST( [Extent1].[nbp_fecha_notificacion] AS datetime2) AS [C1]
FROM [cfg].[nbp_notif_bitacora_procesos] AS [Extent1]
INNER JOIN [exp].[emp_empleos] AS [Extent2] ON [Extent1].[nbp_codemp] = [Extent2].[emp_codigo]
INNER JOIN [cfg].[bpr_bitacora_procesos] AS [Extent3] ON [Extent1].[nbp_codbpr] = [Extent3].[bpr_codigo]
INNER JOIN [cfg].[pro_procesos] AS [Extent4] ON [Extent3].[bpr_codpro] = [Extent4].[pro_codigo]
WHERE ([Extent2].[emp_codexp] = @p__linq__0) AND ([Extent1].[nbp_ya_fue_leido] = (CASE WHEN (@p__linq__1 = 1) THEN [Extent1].[nbp_ya_fue_leido] ELSE @p__linq__2 END))
) AS [Project1]
ORDER BY [Project1].[C1] DESC',N'@p__linq__0 int,@p__linq__1 bit,@p__linq__2 bit',@p__linq__0=1187,@p__linq__1=0,@p__linq__2=0
Luego de revisar el contenido de las tablas involucradas, decidí eliminar todos los 260,266 registros de la tabla cfg.nbp_notif_bitacora_procesos, logrando de esta manera reducir a 0 segundos el tiempo de espera al dar clic a la opción Inicio en Evolution.
¿Es posible mejorar la sentencia SQL acá mostrada para disminuir el tiempo de espera (o cualquier otra involucrada con la tabla indicada que participe al cargar la página Inicio)?
¿Consideran prudente que se programe una tarea que elimine los registros de la tabla cfg.nbp_notif_bitacora_procesos cada cierto tiempo?
¿Qué otras recomendaciones pueden brindarme?
asked
25 Apr '18, 15:13
Henry Sandoval
(suspended)
accept rate:
53%
En mi experiencia, solo con mantener limpias las bandejas de alertas, autorizaciones, etc. El tiempo es bueno. Si estas contienen muchos mensajes sin leer, el tiempo de carga es mayor.
Lo mismo me pasaba, pero a pesar que los mensajes ya están leídos, el tiempo de espera no es rápido por la cantidad de registros con los que compara la consulta SQL.