Mysql
 sql >> Base de données >  >> RDS >> Mysql

Obtenir mysql pour ignorer la condition where

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

Je ne sais pas si MySQL utilise jamais évaluation de court-circuit dans son plan d'exécution, mais il peut être avantageux de mettre la comparaison la moins chère en premier, comme :

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

Vous pouvez utiliser cette méthodologie avec plusieurs paramètres.

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.