Mysql 使用Table.Column是否可以提高性能?
一些一直在我脑海中,但我从未质疑过的事情: 构建查询时,我总是使用所有可能的前缀(例如,Database.Table或Table.Column): 而不仅仅是:Mysql 使用Table.Column是否可以提高性能?,mysql,sql,Mysql,Sql,一些一直在我脑海中,但我从未质疑过的事情: 构建查询时,我总是使用所有可能的前缀(例如,Database.Table或Table.Column): 而不仅仅是: SELECT `ID` FROM `User` WHERE `Name` = "David" LIMIT 1 ; 我不知道为什么,但我一直认为如果使用前缀,这将提高查询的性能 这是真的还是我多年来一直在想的一个神话?你应该自己测试一下 您会发现答案是否定的(除了发送到数据库的查询大小)。table.column限定符用法通常在查询中使
SELECT `ID` FROM `User` WHERE `Name` = "David" LIMIT 1 ;
我不知道为什么,但我一直认为如果使用前缀,这将提高查询的性能
这是真的还是我多年来一直在想的一个神话?你应该自己测试一下 您会发现答案是否定的(除了发送到数据库的查询大小)。
table.column
限定符用法通常在查询中使用多个表时使用,以防止歧义
例如,如果要联接两个表,这两个表都包含一个名为userId
的列,则应将该列别名为:
SELECT a.`userId`
FROM `user` a
LEFT JOIN `email` b
ON b.`userId` = a.`userId`
如果您只选择用户ID,您将收到。请参阅感谢链接,但是,我看不出这与我的问题有什么关系。这看起来很相关:我同意:当存在歧义时,需要表限定符。但是,即使没有歧义,服务器也必须解析每列的表。此操作不应增加任何可测量的开销,因为架构信息几乎总是缓存的(取决于供应商)。除此之外,添加限定符肯定会提高代码的可读性。
SELECT a.`userId`
FROM `user` a
LEFT JOIN `email` b
ON b.`userId` = a.`userId`