Ver Mensaje Individual
  #3  
Antiguo 02-01-2020
Avatar de mamcx
mamcx mamcx is offline
Moderador
 
Registrado: sep 2004
Ubicación: Medellín - Colombia
Posts: 3.913
Reputación: 25
mamcx Tiene un aura espectacularmamcx Tiene un aura espectacularmamcx Tiene un aura espectacular
La razon basica es que los JOINS filtran FILAS. Los pivot en cambian trabajan de forma columnar y con agregaciones.

Hay unas mejoras en el SQL mas moderno que no veo en firebird que lo hacen un poco mas complicado, pero en fin la idea es:

1- Genera todas las filas requeridas LUEGO
2- Usa agregados y/o pivotea los datos

Dependiendo de la complejidad de esos agregados puede resultar mas simple crear una tabla temporal y hacer insert/updates.

Tambien da resultado partir la consulta en secciones. Primero haces los joins que cojen un conjunto de datos y luego los mezclas. Asi es MAS sencillo ver en que momento la consulta se "tuerce" y enfocarse en resolver eso.

P.D: Si la cosa no te da, podrias crear un script con una seccion limitada de datos pa checar...
__________________
El malabarista.
Responder Con Cita