2010-11-02 54 views
1

表的别名比使用表名更快吗?
或者这没有什么区别?
你们有使用表别名的一些好的提示吗?或者推荐/不推荐?表别名比表名更快吗?

感谢,
布鲁诺

+2

它们的输入速度更快:)因为这个原因我总是使用它们并减少代码膨胀。 – AdaTheDev 2010-11-02 12:29:01

回答

5

不,他们不是。

查询引擎甚至没有看到它们(它们只出现在计划的注释中)。

执行查询时,引擎根据查询计划处理实际的物理对象(表,索引等)。

当查询说是这样的:

SELECT * 
FROM mytable t 

,优化创建一个类似的计划:

|--Clustered Index Scan(OBJECT:([mydb].[dbo].[mytable].[pk_mytable] AS [t])) 

和查询引擎解释是像“找到的第一页索引pk_mytable并遍历页面的链接列表,返回找到的所有记录,直到没有更多记录“。

在这个阶段,你怎么确定别人的查询并不重要:引擎处理像页面,指针等物理对象,而不是像别名这样的逻辑事物。

+1

+1,很好的答案 – AdaTheDev 2010-11-02 12:35:55

+0

感谢您的信息! – bruno 2010-11-02 13:41:42

1

它们不是更快,但它们确实使代码更易于阅读。它们对于某些事物是必需的,例如当您多次连接到一个表以及使用派生表时。

我发现总是使用别名并在select中别名所有列,以便维护人员无需弄清楚每个字段在六个月后出现在复杂查询中的哪个表。