在阅读有关调优SQL查询的内容时,我在某个地方读到了这样一句话:"在使用多个表时,始终使用表别名,并在所有列名前面加上别名."

表别名对性能有何影响?还是它们真的会影响我们?

推荐答案

别名根本不影响性能in any practical or measurable way(编辑时添加斜体).也就是说,它会给查询编译增加几乎(如果全部)可测量的延迟.一旦编译(并重新使用),它就不起作用了.

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

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

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

Database相关问答推荐

如何使授权服务器与外部数据库保持同步?

如何在华为Appcube中创建和使用对象(模型)?

生产中的超大型 Mnesia 表

MySQL主键:UUID / GUID vs BIGINT(时间戳+随机)

发布 Oracle 和 SQL Server 性能测试是否违反许可?

Entity Framework:如何检测对数据库的外部更改

数据库中空值(nulls)使用的空间

数据验证是否应该在数据库级别进行?

数据库内部—从哪里开始?

如何避免使用 LINQ-To-SQL 的内存泄漏?

用于 sql server 的免费国家、城市数据库

每个 Docker 容器一个或多个数据库

生成和读取条形码

friendship数据库模式

如何将 Android 手机上的 SQLite 数据库与服务器上的 MySQL 数据库同步?

如何配置 NLog 以写入数据库?

如何使用 Entity Framework CF 在父级之前删除子实体?

将内存数据库保存到磁盘

用于 sql 表中的状态列的类型

如何在我的数据库中避免 NULL,同时还表示丢失的数据?