Ver Mensaje Individual
  #9  
Antiguo 07-11-2023
Avatar de fjcg02
[fjcg02] fjcg02 is offline
Miembro Premium
 
Registrado: dic 2003
Ubicación: Zamudio
Posts: 1.410
Reputación: 22
fjcg02 Va camino a la fama
Al usar una SELECT para calcular el dato, el motor pasa.

Encapsula todo en una SELECT y prueba.

Código SQL [-]
SELECT A.*
FROM
(
SELECT DISTINCT A.Codigo, A.Nombre, COALESCE(RDB$GET_CONTEXT('USER_TRANSACTION', 'MUNICIPIO'), 1) Municipio, C.Nombre NomMunicipio,
       (SELECT SUM(Votos) FROM Resultados WHERE CodPrv = A.CodPrv AND Partido = A.Codigo AND Proceso = B.Proceso 
           AND Mesa IN (SELECT Codigo FROM Mesas WHERE CodPrv = A.CodPrv AND Municipio = COALESCE(RDB$GET_CONTEXT('USER_TRANSACTION', 'MUNICIPIO'), 1))) VotPar,
       RDB$SET_CONTEXT('USER_TRANSACTION', 'MUNICIPIO', (SELECT FIRST 1 Municipio FROM Mesas WHERE CodPrv = B.CodPrv AND Codigo = B.Mesa ORDER BY Municipio))
FROM Partidos A
LEFT JOIN Resultados B ON A.CodPrv = B.CodPrv AND A.Codigo = B.Partido AND B.Proceso = :Proceso
LEFT JOIN Poblacion C ON A.CodPrv = C.CodPrv AND COALESCE(RDB$GET_CONTEXT('USER_TRANSACTION', 'MUNICIPIO'), 1) = C.Codigo
WHERE A.CodPrv = :PrvIns AND A.Codigo > 0 
  AND EXISTS (SELECT Municipio FROM Mesas WHERE CodPrv = B.CodPrv AND Codigo = B.Mesa)
) A
ORDER BY 4, 5 DESC, 2

Por otro lado, haces unas SELECT totalmente anárquicas, que me parece que penalizan totalmente el rendimiento.

Saludos
__________________
Cuando los grillos cantan, es que es de noche - viejo proverbio chino -
Responder Con Cita