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

¿Condiciones de unión en varias columnas frente a unión única en columnas concatenadas?

Creo que la versión con concatenación será prácticamente siempre más lenta.

Si alguna de las columnas que está comparando individualmente tiene índices, la base de datos normalmente podrá usar los índices para optimizar la unión. Cuando compara concatenaciones, tiene que realizar exploraciones de tablas completas, porque el resultado de un cálculo no estará en el índice.

E incluso si las columnas no están indexadas, la base de datos aún puede realizar las comparaciones de manera más eficiente. Compara un par de columnas a la vez y puede detenerse tan pronto como falle una de esas comparaciones. Al usar la concatenación, primero debe combinar todas las columnas, en ambas filas, luego hacer una comparación de cadenas.

Finalmente, si alguna de las columnas es numérica, la concatenación requerirá el paso adicional de convertir el número en una cadena.