我在oracle中用两个表写了一个sql join查询。 在编写查询时,我没有使用任何表别名来引用select子句中的列。 现在这是可能的,因为所选列在两个表中都有不同的名称。
所以问题如下;是否有必要(从性能的角度来看)使用表别名来选择列,而不管两个表中是否有任何类似的列名?
请注意:现在我的印象是“如果我们没有指定表别名来连接查询,那么选择列oracle将始终查找表元数据以找出哪个表具有此列。” 我的假设是真的吗?
谢谢, hanumant
答案 0 :(得分:1)
不,你的假设不正确。
使用表别名至少有四个理由:
使用它们没有明显的性能损失。
答案 1 :(得分:0)
简化......
这失败
select
ID,
ID
from table1
inner join table2 on table1.ID = table2.AnotherID
这不会失败
select
a.ID,
b.ID
from table1 a
inner join table2 b on a.ID = b.AnotherID
第一个失败的原因是优化引擎不知道从哪个表中提取ID字段。使用别名 - 您可以给它一个关于使用哪个表的“提示”。别名只是完整表名的替代。
在尝试访问别名表时,还必须小心。有关此内容的更多信息,请查看SQL操作顺序。