sql >> Base de Datos >  >> RDS >> Oracle

¿Algún impacto en el rendimiento en Oracle por usar LIKE 'string' vs ='string'?

Hay una clara diferencia cuando usa variables de vinculación, que debería usar en Oracle para cualquier otra cosa que no sea el almacenamiento de datos u otras operaciones de datos masivos.

Tomemos el caso de:

SELECT * FROM SOME_TABLE WHERE SOME_FIELD LIKE :b1

Oracle no puede saber que el valor de :b1 es '%algún_valor%', o 'algún_valor', etc. hasta el momento de la ejecución, por lo que hará una estimación de la cardinalidad del resultado en función de la heurística y elaborará un plan adecuado que puede o no ser adecuado para varios valores de :b, como '%A', '%', 'A', etc.

Se pueden aplicar problemas similares con un predicado de igualdad, pero el rango de cardinalidades que podría resultar se estima mucho más fácilmente en función de las estadísticas de columna o la presencia de una restricción única, por ejemplo.

Entonces, personalmente, no comenzaría a usar LIKE como reemplazo de =. El optimizador es bastante fácil de engañar a veces.