sql >> Base de Datos >  >> RDS >> Mysql

Conseguir que mysql ignore la condición where

SELECT *
FROM foo
WHERE id = $id
AND ( bar = $baz OR $baz [equals null, empty string, zero, whatever] )

No sé si MySQL alguna vez usa evaluación de cortocircuito en su plan de ejecución, pero puede ser beneficioso poner primero la comparación más barata, como:

SELECT *
FROM foo
WHERE id = $id
AND ( $baz [equals null, empty string, zero, whatever] OR bar = $baz )

Puede utilizar esta metodología con múltiples parámetros.

SELECT *
FROM foo
WHERE id = $id
AND ( $baz [equals null, empty string, zero, whatever] OR bar = $baz )
AND ( $x = 0 or x = $x )
AND ( $y IS NULL OR y = $y )

-- etc.