2010-09-15 8 views
5

¿Siempre es una buena práctica de usar -¿Es siempre una buena práctica usar alias en combinaciones sql o consultas anidadas?

Select E.Id,D.DeptName from Employee E join Dept D on E.DeptId=D.Id 

en lugar de -

Select Employee.Id,Dept.DeptName from Employee join Dept on Employee.DeptId=Dept.Id 

Aparte de legibilidad y reducción de la duración de la consulta cuáles son los beneficios de la utilización de los alias? Cuando consulté con nuestra base de datos de expertos, dice consulta puede romper si hay no hay alias a veces ... lo que no entiendo por completo ... Le agradecería si alguien pudiera compartir sus pensamientos y cuáles son las mejores prácticas a ser seguidos ... Muchas gracias.

Respuesta

10
  1. Usted es probablemente confuso "la necesidad de usar un prefijo de tabla" y "la necesidad de usar un alias" cuando se refiere a romper cosas.

    La consulta podría de hecho ser más propensos a romperse después de añadir una unión si no se utiliza un prefijo de la tabla; cuando su tabla original y una tabla recién agregada comparten una columna con el mismo nombre. Por lo tanto, para el mantenimiento futuro, siempre usar un prefijo de tabla es una BUENA idea para todas las columnas de la consulta.

    Sin embargo, este problema se resuelve mediante el uso de cualquier prefijo mesa delante de las columnas, ya sea real o nombre de la tabla de alias nombre.

  2. El alias es necesario (en contraposición a nombre de tabla real) cuando se utiliza la misma mesa dos veces.

  3. De mucha experiencia con el mantenimiento de un montón de SQL complejas, hay que decir que mi opinión es 100% frente a los suyos.

    A saber, el uso de un corto - en especial 1-carta - tabla de alias convierte en un más difícil de leer/mantener el código.

    Cuando depura una pieza larga de SQL con juntas complejas a las 2 a.m. en la mañana durante la emergencia de producción, mirar hacia atrás/adelante 10-15 líneas arriba para ver qué tabla coincide con el alias "e" es MUCHO más difícil.

    Este punto tiene 2 excepciones

    • cuando la lógica de negocio de la consulta utiliza la tabla para un uso que es muy distinto del nombre de la tabla.

    • cuando el nombre de la tabla es irrazonablemente largo e irrazonable debido a circunstancias fuera de su control, y entonces el alias debería ser algo legible y lógico. P.ej. "EmployeeTableIndexedByUIDSourcedFromHR" puede y por lo general debe ser alias como "Employee", pero no como "E"

  4. Además, para evitar tener cadenas excesivamente largas, que ayuda hreatly si formatea sus consultas usando saltos de línea y la alineación:

    Select Employee.Id,Dept.DeptName from Employee join Dept on Employee.DeptId=Dept.Id

vs

SELECT Employee.Id 
     ,Dept.DeptName 
FROM Employee 
JOIN Dept 
ON  Employee.DeptId=Dept.Id 
+2

'' D' E' y no son tan malos en este caso, mejor que la arbitraria 'a' y 'B' – cjk

+1

@ck - no es tan malo para una consulta de ejemplo tan simple como esto. Como política, ES mala, ya que las consultas las leerán personas que pueden no saber todos los 1000 nombres de tabla de memoria, en una consulta con 5 tablas unidas y decenas de líneas largas. – DVK

+1

+1 para la mayoría de los puntos, aunque (como ck) creo que los alias cortos pueden ser bastante legibles en consultas simples. El punto clave es que los alias deben ser fácilmente comprensibles. –

4

Cuando hace referencia dos veces a la misma tabla, debe usar un alias.

Aparte de eso, no hay ninguna razón técnica que se me ocurra.

1

La forma más legible es ser explícito con un nombre completo; en eso, su experto DB y estoy de acuerdo.

Pero cuando se está desarrollando ... alias son de su amigo, sin duda.

0
  1. Aumenta la legibilidad
  2. proporciona una manera de unirse a la misma mesa en diferente condición de combinación
3

casi siempre hago porque no me gusta que escribir el nombre completo de tabla, y si no' t hacerlo puede terminar con nombres de columna ambiguos. Eso sí, no utilizar alias sin sentido tales como T1, T2, etc.

0

Prefiero usar los nombres de tabla totalmente calificados en la mayoría de los casos. Usualmente solo uso un nombre de alias para tablas si se requiere una unión interna entre dos tablas en bases de datos separadas, solo para hacerlo un poco más legible.

Select Employee.Name, sales.Amount 
From Employee 
     Inner Join SalesDB.dbo.Sales as Sales On Employee.ID = Sales.EmployeeID 

Sin embargo, yo recomendaría el uso de nombres de alias para sus campos con el fin de evitar cambios requeridos para aplicaciones de llamadas aguas abajo.

Select Employees.Name as [Name] 
From Employees 
Cuestiones relacionadas