在阅读有关调优SQL查询的内容时,我在某个地方读到了这样一句话:"在使用多个表时,始终使用表别名,并在所有列名前面加上别名."
表别名对性能有何影响?还是它们真的会影响我们?
在阅读有关调优SQL查询的内容时,我在某个地方读到了这样一句话:"在使用多个表时,始终使用表别名,并在所有列名前面加上别名."
表别名对性能有何影响?还是它们真的会影响我们?
别名根本不影响性能in any practical or measurable way(编辑时添加斜体).也就是说,它会给查询编译增加几乎(如果全部)可测量的延迟.一旦编译(并重新使用),它就不起作用了.
当您有多个表时,别名可以消除歧义,因为您知道它来自哪个表.它还可以防止将来的表更改中断查询.比方说,您将一个审计列添加到一个表中,而该列已经存在于另一个表中.使用两个表的不带别名的查询将中断.
别名在某些情况下也是强制的,例如模式绑定视图.
SQL解析引擎(在执行查询之前读取所有查询,并使用这些信息在将来缓存编译后的查询以便更快地执行)是唯一查看别名的东西,并使用它来帮助消除符号查找中的歧义.当系统在执行-存储之前解析它时,它已经产生了符号,就像任何其他语言的任何其他可编译语句一样.