Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Zmusić mysql do ignorowania warunku gdzie

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

Nie wiem, czy MySQL kiedykolwiek używa oceny zwarcia w planie wykonania, ale korzystne może być umieszczenie na pierwszym miejscu tańszego porównania, takiego jak:

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

Możesz użyć tej metodologii z wieloma parametrami.

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.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Czy istnieje bardziej wydajny sposób tworzenia stronicowania w Hibernate niż wykonywanie zapytań wybierających i zliczających?

  2. lavaral 5 ERROR{ (SQLSTATE[HY000] [1045] Odmowa dostępu dla użytkownika 'root'@'localhost' (przy użyciu hasła:YES)}

  3. Jak mogę zoptymalizować funkcję ORDER BY RAND() MySQL?

  4. Zakrywanie szesnastką na obraz w PHP?

  5. Dlaczego ten błąd wystąpił podczas tworzenia EVENT z instrukcją złożoną?