Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > Firebird e Interbase
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

 
 
Herramientas Buscar en Tema Desplegado
  #11  
Antiguo 11-11-2016
Avatar de mamcx
mamcx mamcx is offline
Moderador
 
Registrado: sep 2004
Ubicación: Medellín - Colombia
Posts: 3.939
Poder: 27
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
 



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
If o Case en cláusula WHERE Jere_84 SQL 6 26-03-2013 22:15:16
Como usar el CASE en 2 SubConsultas ???? AGAG4 Firebird e Interbase 13 16-10-2006 23:08:45
Problemas al usar case David OOP 5 28-07-2006 17:14:19
Case Anidados ¿Se puede? jam888 MS SQL Server 5 31-01-2006 14:39:38
Incluir un IF dentro de un CASE Javi2 SQL 1 21-04-2005 11:59:31


La franja horaria es GMT +2. Ahora son las 22:48:12.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi