查询中列的顺序是否重要?

时间:2011-01-03 05:52:37

标签: mysql sql query-optimization

从MySQL表中选择列时,性能会受到选择列的顺序与表中的顺序相比的影响(不考虑可能覆盖列的索引)吗?

例如,您有一个包含行uid,name,bday的表,并且您有以下查询。

SELECT uid, name, bday FROM table

MySQL是否会以不同的方式看到以下查询,从而导致任何类型的性能损失?

SELECT uid, bday, name FROM table

3 个答案:

答案 0 :(得分:7)

实际上,订单无关紧要,因此您可以根据需要自由订购。

编辑:我想更多的背景是有用的:据我所知,优化任何查询的过程发生在确定正在拉动行数据的哪个子集之前。因此,查询优化器将其分解为要查看的表,要执行的连接,要使用的索引,要应用的聚合等,然后检索该数据集。列排序发生在数据拉取和结果集的形成之间,因此数据实际上按照数据库的顺序“到达”,然后在返回到应用程序时重新排序。

答案 1 :(得分:2)

在实践中,我怀疑它可能。

使用一个不错的查询优化器:它不应该。

您只能通过测量来判断您的情况。随着数据库中数据分布的变化,测量结果可能会发生变化。

关于

<强> Wazzy

答案 2 :(得分:0)

所选属性的顺序可以忽略不计。底层存储引擎肯定会对它们的属性位置进行排序,但是在大多数情况下,您无需知道特定顺序(重命名,更改表,行与列存储)可能独立于表描述,这只是元数据无论如何。在任何可测量的开销方面,呈现到结果集中的顺序是微不足道的。