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

Como explico uma consulta com parâmetros no MySQL


Contanto que você esteja fazendo apenas um igual (e não um like, que pode ter efeitos de curto-circuito), basta substituí-lo por um valor:
EXPLAIN SELECT foo FROM bar WHERE some_column = 'foo';

Como não está realmente executando a consulta, os resultados não devem ser diferentes dos reais. Existem alguns casos em que isso não é verdade (já mencionei LIKE). Aqui está um exemplo dos diferentes casos de LIKE :
SELECT * FROM a WHERE a.foo LIKE ?
  1. Param 1 ==Foo - Pode usar uma verificação de índice se existir um índice.
  2. Param 1 ==%Foo - Requer uma verificação completa da tabela, mesmo que exista um índice
  3. Param 1 ==Foo% - Pode usar uma varredura de índice, dependendo da cardinalidade do índice e outros fatores

Se você estiver se juntando, e a cláusula where resultar em uma combinação impossível (e, portanto, causará um curto-circuito). Por exemplo:
SELECT * FROM a JOIN b ON a.id = b.id WHERE a.id = ? AND b.id = ?

Se o primeiro e o segundo parâmetros forem iguais, ele tem um plano de execução e, se forem diferentes, entrará em curto-circuito (e retornará 0 linhas sem atingir nenhum dado) ...

Existem outros, mas esses são tudo que consigo pensar de cabeça agora...