Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Obtendo mysql para ignorar onde condição

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

Não sei se o MySQL alguma vez usa avaliação de curto-circuito em seu plano de execução, mas pode ser benéfico colocar a comparação mais barata em primeiro lugar, como:
SELECT *
FROM foo
WHERE id = $id
AND ( $baz [equals null, empty string, zero, whatever] OR bar = $baz )

Você pode usar essa metodologia com vários 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.