【问题标题】:Does the order of columns in a query matter?查询中列的顺序是否重要?
【发布时间】:2011-06-02 17:04:56
【问题描述】:

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

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

SELECT uid, name, bday FROM table

MySQL 是否对以下查询有任何不同的看法,从而导致任何形式的性能下降?

SELECT uid, bday, name FROM table

【问题讨论】:

    标签: mysql sql query-optimization


    【解决方案1】:

    实际上,顺序并不重要,因此您可以随意订购它们。

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

    【讨论】:

      【解决方案2】:

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

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

      您只能通过测量来判断您的情况。并且测量值可能会随着数据库中数据分布的变化而变化。

      关于

      Wazzy

      【讨论】:

        【解决方案3】:

        所选属性的顺序可以忽略不计。底层存储引擎肯定会对其属性位置进行排序,但在大多数情况下,您不一定有办法知道特定排序(重命名、更改表、行与列存储)可能独立于表描述,而表描述只是元数据反正。就任何可测量的开销而言,呈现到结果集中的顺序都是微不足道的。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2017-05-21
          • 1970-01-01
          • 2020-04-30
          • 1970-01-01
          • 1970-01-01
          • 2019-07-14
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多