sql >> Base de Datos >  >> RDS >> Sqlserver

¿Qué sintaxis de unión es mejor?

Bueno, "mejor" es subjetivo. Hay algo de estilo aquí. Pero abordaré sus preguntas directamente.

  1. Ambos realizan lo mismo
  2. Ambos cumplen con ANSI.
  3. El problema con el primer ejemplo es que

    • es muy fácil derivar inadvertidamente el producto cruzado (ya que es más fácil omitir los criterios de unión)

    • también se vuelve difícil depurar los criterios de combinación a medida que agrega más y más tablas a la combinación

    • dado que la sintaxis de unión externa de estilo antiguo (*=) ha quedado obsoleta (se ha documentado durante mucho tiempo que arroja resultados incorrectos), cuando necesita introducir uniones externas, necesita mezclar uniones de estilo nuevo y estilo antiguo ... ¿por qué promover incoherencia?

    • Si bien no es exactamente la autoridad en mejores prácticas, Microsoft recomienda una sintaxis explícita de INNER/OUTER JOIN

    • con el último método:

      • está utilizando una sintaxis de unión coherente independientemente de si es interior/exterior
      • es más difícil (no imposible) derivar accidentalmente el producto vectorial
      • aislar los criterios de combinación de los criterios de filtro puede facilitar la depuración

Escribí la publicación que señaló Kevin.