Vis*_*hal 7 sql alias join nested-queries
使用是否始终是最佳做法 -
Select E.Id,D.DeptName from Employee E join Dept D on E.DeptId=D.Id
Run Code Online (Sandbox Code Playgroud)
代替 -
Select Employee.Id,Dept.DeptName from Employee join Dept on Employee.DeptId=Dept.Id
Run Code Online (Sandbox Code Playgroud)
除了可读性和减少查询的长度,使用别名有什么好处?当我咨询我们的数据库专家时,他说查询可能会破坏,如果有时候没有别名 ......我完全不理解......如果有人愿意分享他们的想法以及要遵循的最佳做法,我将不胜感激. .非常感谢.
DVK*_*DVK 15
在提到破坏事物时,你可能会混淆"需要使用表前缀"和"需要使用ALIAS".
如果不使用表前缀,则在添加连接后查询可能确实更容易中断; 当您的原始表和新添加的表共享具有相同名称的列时.因此,为了将来的维护,始终使用表前缀对查询中的所有列都是一个好主意.
但是,通过在列前面使用ANY表前缀来解决此问题,无论是真实的表名还是别名.
当您使用同一个表两次时,需要别名(而不是实际的表名).
从维护大量复杂SQL的大量经验来看,我必须说我的观点与你的观点完全相反.
也就是说,使用短 - 特别是1个字母 - 表别名使HARDER能够读取/维护代码.
当你在生产紧急情况下早上2点调试一个带有复杂关节的长篇SQL时,在上面查看10-15行以查看哪个表匹配别名"e"要困难得多.
这一点有两个例外
当查询的业务逻辑将表用于与表名非常不同的目的时.
当表名由于你无法控制的情况而不合理地长而不合理时 - 别名应该仍然是可读和合乎逻辑的.例如" EmployeeTableIndexedByUIDSourcedFromHR"可以并且通常应该是别名为" Employee",但不是" E"
此外,为了避免使用过长的字符串,如果使用换行符和对齐格式化查询,则会有很大的帮助:
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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5460 次 |
| 最近记录: |