Ver Mensaje Individual
  #11  
Antiguo 11-11-2016
Avatar de mamcx
mamcx mamcx is offline
Moderador
 
Registrado: sep 2004
Ubicación: Medellín - Colombia
Posts: 3.911
Reputación: 25
mamcx Tiene un aura espectacularmamcx Tiene un aura espectacularmamcx Tiene un aura espectacular
Cita:
Empezado por ronalg Ver Mensaje
mamcx podrias darnos un luz sobre el asunto?

Debes hacer lo mismo cuando no entiendes el codigo, ejecutarlo paso a paso.

Esta es la parte clave
Código SQL [-]
where iif(:cod_cliente is null,1,iif(:cod_cliente=a.ref_cliente,1,0))=1

Cuando el motor lo recibe, lo sustituye por los valores. Que pasa si lo haces?

Código SQL [-]
where iif(null is null,1)

Lo cual se ejecuta POR CADA FILA DE LA TABLA. Es probable que FB pueda optimizar este caso (no estoy seguro: Hay que chequear el plan de ejecucion)

El problema es con el otro caso:

Código SQL [-]

where iif(false, iif(1=a.ref_cliente,1,0))=1
...
where  iif(True,1,0))=1
where  iif(False,1,0))=1
where  iif(False,1,0))=1
etc...

Estas anulando la posibilidad de usar el indice, porque tiene que chequear fila a fila.

Ves?
__________________
El malabarista.
Responder Con Cita