PDA

Ver la Versión Completa : Firebird - Condición en Where que utilice los indices correctamente


gluglu
19-12-2013, 21:03:23
Hola !

Firebird 2.5

Intento hacer algo como esto :

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

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? clave=1 and :modo=1