Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

Algum impacto no desempenho no Oracle para usar LIKE 'string' vs ='string'?


Há uma clara diferença quando você usa variáveis ​​de ligação, que você deve usar no Oracle para qualquer outra coisa que não seja data warehousing ou outras operações de dados em massa.

Veja o caso de:
SELECT * FROM SOME_TABLE WHERE SOME_FIELD LIKE :b1

O Oracle não pode saber que o valor de :b1 é '%some_value%', ou 'some_value' etc. até o tempo de execução, então ele fará uma estimativa da cardinalidade do resultado com base na heurística e apresentará um plano apropriado que pode ou não ser adequado para vários valores de :b, como '%A','%', 'A' etc.

Problemas semelhantes podem ser aplicados com um predicado de igualdade, mas o intervalo de cardinalidades que pode resultar é muito mais facilmente estimado com base nas estatísticas da coluna ou na presença de uma restrição exclusiva, por exemplo.

Então, pessoalmente, eu não começaria a usar LIKE como substituto para =. O otimizador é muito fácil de enganar às vezes.