Introducción
El uso de JOINS nos permite unir registros de dos o más tablas dentro de un diagrama relacional.
Existen varios tipos de JOIN:
Posibles Problemas que plantea el uso de JOIN:
Enmarcarar registros duplicados con el uso de SELECT DINTINCT
Es tentador el uso de SELECT DISTINCT para eliminar filas duplicadas en los usos de JOIN. Es mucho mejor determinar que filas son las duplicadas y arreglar el problema.
Mezclar diferentes tipos de datos en el uso de JOIN o cláusulas Where
Si comparamos o unimos columnas con diferente tipo de datos, estamos usando conversiones implícitas cuyo resultado puede ser deficiente en el escaneo de las tablas. Este resultado puede generar errores ya que no existen restricciones que garanticen que el tipo de datos sea el correcto.
Uso innecesario de Full Outer Join
Cuando usamos OUTER JOINS damos como resultado las filas que coinciden en una tabla con la otra y las que no. Este uso no debería de ser el habitual a la hora de unir las tablas, especialmente si filtramos las filas no coincidentes a través del uso de la cláusula WHERE. El uso de INNER, LEFT, RIGHT JOIN nos proporcionará el resultado de las filas que coinciden y si necesitamos todas las filas de ambas tablas es mejor usar CROSS JOIN
Uso de subconsultas en lugar de JOIN
El uso de una subconsulta contra una fila de una tabla puede parecer algo intuitivo y disfraza la idea real que es el uso de un CURSOR. A veces las funciones de las ventanas de consultas suelen dar las soluciones más rápidas a la misma operación. Muchas de ocasiones en las que utilizamos subconsultas pueden ser sustituidas por una consulta JOIN mucho más simple y rápida.
Uso de Join en vistas largas
Las vistas son como las tablas en su comportamiento, pero no pueden ser indexadas para soportar el uso de JOINS. El uso de JOIN en una vista larga nunca dará un buen resultado. En lugar de crear una vista es mejor indexar bien las tablas o crear una tabla temporal indexada que contenga las filas ya filtradas de las vistas en las que queramos hacer uso de JOIN