Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Conexión con bases de datos (https://www.clubdelphi.com/foros/forumdisplay.php?f=2)
-   -   Firebird - Condición en Where que utilice los indices correctamente (https://www.clubdelphi.com/foros/showthread.php?t=84886)

gluglu 19-12-2013 21:03:23

Firebird - Condición en Where que utilice los indices correctamente
 
Hola !

Firebird 2.5

Intento hacer algo como esto :

Código SQL [-]
Select * from TABLA
where (:MODO = 1 and CLAVE = 1) or
      (:MODO = 2 and CLAVE = 2)

La tabla está indexada por el campo CLAVE, pero necesito condicionar la consulta según un parámetro externo.

En esta consulta, si MODO = 1, siempre recorre la tabla completa (pongamos 100.000 registros).

Si cambio la consulta por

Código SQL [-]
Select * from TABLA
where CLAVE = 1

la consulta sólo recorre 10 registros ya que TABLA está indexada por CLAVE y sólo hay 10 registros con Clave = 1.

Gracias por vuestra ayuda.

Saludos

Casimiro Notevi 20-12-2013 01:30:42

¿MODO hace referencia a algún campo o es sólo una variable?

¿Has probado a cambiar el orden?
Código SQL [-]
clave=1 and :modo=1


La franja horaria es GMT +2. Ahora son las 02:58:50.

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