表别名如何影响性能?

Bhu*_*han 23 sql database performance

在阅读有关调优SQL查询的内容时,我在某处读到"当您使用多个表时,始终使用表别名并使用别名为所有列名添加前缀".

表别名如何影响性能?或者他们真的会影响吗?

gbn*_*gbn 42

别名根本不会以任何实际或可测量的方式影响性能(在编辑时添加斜体).也就是说,它会在查询编译时添加几乎(如果全部)可测量的延迟.一旦编译(并重新使用),它就没有效果.

当您拥有多个表时,别名会消除歧义,因为您知道它来自哪个表.它还可以防止将来的表更改破坏查询.比如,您将一个审计列添加到另一个表中已存在的表中.使用两个表而没有别名的查询将中断.

在某些情况下,别名也是必需的,例如模式绑定视图.

SQL解析引擎(在执行它们之前读取所有查询,并使用该信息在将来缓存已编译的查询以便更快地执行)是唯一查看别名的内容,并使用它来帮助消除符号查找中的歧义.当系统在执行 - 存储之前被解析时,系统就会产生符号,就像任何其他语言中的任何其他可编译语句一样.

  • 迂腐,但......解析可能会受到影响,数量可以忽略不计.例如,Oracle尝试通过将sql语句的前n个字符作为索引散列到sql语句高速缓存中来保存硬分析步骤.超过n个字符的语句可以散列到同一个桶,从而导致额外的检查以验证命中.短别名可以压缩语句,并提供更好的机会获得独特的命中.此外,如果没有别名列,解析器必须确定该列属于哪个表.但这根本不值得考虑.可读性会更重要. (4认同)