Mysql
 sql >> Datenbank >  >> RDS >> Mysql

MySQL dazu bringen, die Where-Bedingung zu ignorieren

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

Ich weiß nicht, ob MySQL jemals Kurzschlussbewertung verwendet in seinem Ausführungsplan, aber es kann vorteilhaft sein, den günstigeren Vergleich an die erste Stelle zu setzen, wie zum Beispiel:

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

Sie können diese Methode mit mehreren Parametern verwenden.

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.