表别名是否比仅使用表名更快?
或者这没有任何区别?
你们有一些使用表别名的好技巧吗?或推荐/不推荐?
谢谢,
布鲁诺
答案 0 :(得分:5)
不,他们不是。
查询引擎甚至看不到它们(它们只出现在计划的注释中)。
执行查询时,引擎根据查询计划处理实际的物理对象(表,索引等)。
当查询说出类似这样的内容时:
SELECT *
FROM mytable t
,优化器创建类似于此的计划:
|--Clustered Index Scan(OBJECT:([mydb].[dbo].[mytable].[pk_mytable] AS [t]))
并且查询引擎解释就像“找到索引pk_mytable
的第一页并遍历页面的链接列表,返回找到的所有记录,直到没有更多记录”。
在这个阶段,你如何为查询设置别名并不重要:引擎处理物理对象,如页面,指针等,而不是像别名这样的逻辑事物。
答案 1 :(得分:1)
它们并不快,但它们确实使代码更容易阅读。并且它们对于某些事情是必需的,例如当您多次加入表格时以及使用派生表格时。
我发现总是使用别名并对select中的所有列进行别名是一个好习惯,这样维护者就不必弄清楚每个字段来自六个月后的复杂查询中的哪个表。