【问题标题】:select * from table where something VS select column from table where somethingselect * from table where something VS select column from table where something
【发布时间】:2014-11-15 09:28:47
【问题描述】:

我想知道两者之间的性能是否存在显着差异

select * from table where something

select column from table where something

【问题讨论】:

  • 抱歉重复,谢谢大家。
  • 对于那些想要更有表现力的答案的人,这里是explanation - 请参阅摘要。
  • 到目前为止我没有看到的(即使是重复的)提到了存储和执行模型。 MySql 是一个行存储:它在内部处理整个行,而不管它们在查询中的实际使用情况。因此可能存在差异,但与您在列存储引擎中发现的差异相比,差异相当微不足道,其中仅涉及实际使用的列。

标签: mysql sql performance


【解决方案1】:
SELECT * FROM table WHERE something

将检索该表中的所有列

SELECT column FROM table WHERE something

只会检索该列。

这意味着后者会更快。但如果这将是一个显着的差异取决于你的桌子大小。

您可以阅读this 对类似问题的回答以了解更多信息

【讨论】:

    【解决方案2】:

    是的,存在性能差异。

    SELECT * FROM someTable WHERE something
    

    相比会更重
    SELECT column FROM someTable WHERE something
    

    因为第一个必须处理所有列,而第二个必须只处理一个。你应该总是更喜欢第二个。

    更多详情,我会推荐你​​What is the reason not to use select *?

    【讨论】:

      【解决方案3】:

      这是我为比较 SELECT * 与 SELECTing 单个列所做的一个小基准。这是一个简化的代码,循环中有 100 次迭代,在我的测试中,我只查询了我需要的内容,34 列中有 25 列,vs SELECT *

      结果:SELECT * 平均需要 4.8 秒才能完成,而 SELECT 单个列需要 3.2 秒!这是非常重要的。所以确实 SELECT * 慢得多。然而,在一个有 4 列的表的较小查询中,选择 all vs * 给出了几乎相同的基准。所以在我的测试中,SELECT * 会对来自具有大量列的大表的复杂查询产生性能影响。

      $start_time = microtime(true);
      for ($x = 0; $x < 100; $x++) {
      $results = $dbp->multi(
            "SELECT t1.id, t1.name, t2.field, t2.something, t2.somethingelse "
            . "FROM table1name t1 INNER JOIN table2name t2 ON t2.id = t1.id "
            . "ORDER BY title ASC LIMIT 1, 50");
      }
      $ms = (number_format(microtime(true) - $start_time, 4) * 1000);
      $end_time_sec = floor($ms / 60000) . 'm:' . floor(($ms % 60000) / 1000) . 's:' . str_pad(floor($ms % 1000), 3, '0', STR_PAD_LEFT) . 'ms';
      echo "$ms ms / $end_time_sec";
      

      【讨论】:

        猜你喜欢
        • 2011-11-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-02-14
        • 1970-01-01
        • 1970-01-01
        • 2015-10-08
        • 1970-01-01
        相关资源
        最近更新 更多