【问题标题】:SELECT * or SELECT specific columns [duplicate]SELECT * 或 SELECT 特定列 [重复]
【发布时间】:2012-07-24 21:35:53
【问题描述】:

可能重复:
Which is faster/best? SELECT * or SELECT column1, colum2, column3, etc

使用SELECT * FROM table_name 是否比使用SELECT specific_columns FROM table_name 对性能影响大?

【问题讨论】:

  • 简而言之,是的。听你的长辈...:P
  • SELECT 关键字后面的列表选择 columns 而不是行。
  • 在大多数情况下没有明显的区别(尽管很多人认为有)
  • 除非您打算使用其中的大部分列,否则永远不需要使用SELECT *。大多数时候选择你需要的会更好。
  • @zerkms:那么我想我们必须同意不同意。 :-) 无论如何,在链接的问题中已经讨论到死了。 (而且我不同意micro-optimization,顺便说一句;这就像说可以编写自己的代码而不是使用编译器的 RTL,因为您不知道 RTL 代码更快,或者您不需要索引表,直到您真正注意到查询运行速度较慢。)

标签: mysql


【解决方案1】:

是的,它会影响性能,尤其是当您选择多行时。 只选择您真正需要的字段。


我们以一个简单的用户名存在性检查为例:
当您只能选择 ID 时,为什么要选择所有内容?两者都做,但只选择一个领域是更好的解决方案。

SELECT `id` FROM users WHERE `username` = 'Nikola K.'

而不是:

SELECT * FROM users WHERE `username` = 'Nikola K.'

【讨论】:

    【解决方案2】:

    我建议使用 EXPLAIN 来找到最适合您需求的方法。我想这取决于您的表格中有多少列。

    以下是一些关于 MySQL Explain 的有用网站:

    http://dev.mysql.com/doc/refman/5.0/en/explain.html

    http://dev.mysql.com/doc/refman/5.0/en/using-explain.html

    http://weevilgenius.net/2010/09/mysql-explain-reference/

    【讨论】:

    • EXPLAIN 只会在特定情况下对它们有所不同。所以一般EXPLAIN对两者都是一样的
    【解决方案3】:

    只选择你需要的!在开发中我使用*,因为当我真的不知道我需要什么时它会更容易,但在最终版本中你真的应该具体。为什么不呢?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-09-17
      • 2021-12-18
      • 2018-06-16
      • 1970-01-01
      • 2014-02-14
      • 2018-08-22
      • 2016-07-27
      • 2013-01-18
      相关资源
      最近更新 更多