MySQL" AS"的性能而不是" AS"

时间:2013-03-27 08:52:30

标签: mysql performance

以下两个查询之间是否存在效果差异?

SELECT * FROM users AS u LEFT JOIN parents AS p ON u.id=p.user_id

SELECT * FROM users u LEFT JOIN parents p ON u.id=p.user_id

(第二个没有AS

3 个答案:

答案 0 :(得分:2)

与所有内容一样:衡量是知道。如果你真的想知道运行一个分析器和测量。否则从我们这里拿走它:到目前为止你甚至不值得考虑它。

如果,根本不存在任何差异(相当大的数量)应该a)被认为是MySQL中的缺陷,b)在查询解析部分时出现问题,不是查询执行部分,因此无论如何都是可忽略的,因为执行而不是解析通常会占总“查询时间”的99.99999%(如果不是更多)。

如果有任何可衡量的差异,应该非常非常小,因此a)不值得为这些差异而烦恼,因为用户通常不会注意加速度以纳秒为增量,b)只有在紧密循环中运行数千个查询时才会显着。

如果MySQL的贡献者没有搞砸,那么就没有任何区别,因为AS关键字只是可选的,并且存在易读性。 确定的唯一方法是分析。这不会是第一次在软件中弹出一些奇怪的错误或行为。但是(假设AS关键字根本不会产生任何影响是非常安全的,因为很久以前,许多数以千计的MySQL用户都已经“发现”了这一点(或者他们都没有打扰过,你永远不会知道Puh)。花在任何时候描述这个“问题”,恕我直言,是浪费时间。

阅读rules of Optimization club

只有当 出现性能问题时,才会开始寻找要优化的地方。而你只是优化“低挂水果”或占用相当大负荷的东西(无论是I / O,CPU,网络等)。优化查询删除AS关键字以提高性能是一种微观优化,永远不会回报您的时间投资(除了错误/问题)。作为一个“思想实验”,虽然你的问题可以(并且应该)通过使用分析而不是猜测,其他人的意见等建立硬数据来回答。


确实遗漏了可能可能遭受查询执行的查询缓存等问题,这些问题是使用/不使用AS关键字或AS关键字执行的每次执行查询时都会放置(或者更确切地说:可能)导致查询执行计划(不必要地)重新创建或查询缓存无法重复使用等等。但现在我们真的在这里讨论边缘情况这句话再说一遍:衡量就是知道

答案 1 :(得分:1)

真的是一样的。

AS关键字是可选的。就像OUTERLEFT JOIN上的LEFT OUTER JOIN关键字一样。

答案 2 :(得分:0)

当使用标识符别名化select_expr时,AS关键字是可选。 但是,因为AS是可选的。 MySQL将第二个解释为别名。 因此,最好在指定列别名时习惯使用AS。

by:http://dev.mysql.com/doc/refman/5.0/en/select.html#idp56626352