MySQL 指定查询中的每一列,而不是使用 SELECT *


MySQL specify every column in query rather than using SELECT *

可能的重复项:
哪个更快/最好?选择 * 或选择列 1、列 2、列 3 等

我记得几年前读到过,在您想要从 MySQL 表中选择所有内容的情况下,指定每一列而不是使用懒惰且效率较低的SELECT *方法更有效、更好的做法。

我正在努力在网上找到任何证据,所以我不确定它是否适用于较新版本的MySQL和PHP。

在我的

SELECT中指定每一列而不是使用SELECT *会更好吗?

SELECT * FROM golf_course WHERE id = 2;

Select * 本质上效率较低,因为数据库必须查找列。此外,如果你有一个联接,你正在发送不必要的重复数据,这是浪费数据库和网络资源,特别是如果你在每个查询上都这样做。最后,选择 * 不指定列的顺序,因此,如果有人愚蠢地删除并重新创建具有不同顺序的列的表,您可能会突然将您的社会保险号显示在窗体或报表上的名字列中。如果有人添加了您不希望在任何地方显示的列(例如出于审计目的或您不希望客户看到的有关客户的注释),那么您就遇到了麻烦。此外,如果您确实添加了列,则需要确定它们应该显示的位置,以及为什么不让它们随意地出现在任何地方。选择 * 是一个非常糟糕的 SQL 反模式。

是的。

  • 您的查询将更容易理解
  • 您只会选择所需的列
  • 如果指定所有列,则以后删除不需要的列会
  • 更容易,但是如果没有并且以后要指定,则需要键入所有列
  • 您将能够
  • 按照所需的方式排列列,并在代码中引用它们,即使以后将更多列添加到表中也是如此
  • 您可以轻松添加计算、串联
  • 等等

性能方面,我不确定

我直言,调用SELECT *必须读取仅调用必填字段的所有字段会更有效率。当您查询更大的数据库时,使用 SELECT *