0

可能重复:
哪个更快/最好?SELECT * 或 SELECT column1、colum2、column3 等

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

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

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

SELECT * FROM golf_course WHERE id = 2;
4

3 回答 3

2

是的。

  • 您的查询将更容易理解
  • 您将只选择您需要的列
  • 如果您指定了所有列,则以后删除不需要的那些会更容易,但如果您没有指定并且您想稍后再做,则需要键入所有列
  • 即使稍后将更多列添加到表中,您也可以按照您想要的方式排列列并在代码中引用它们
  • 您可以轻松地添加计算、连接
  • 和更多

性能方面,我不确定

于 2012-06-12T12:40:20.510 回答
2

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

于 2012-06-12T13:36:59.603 回答
0

恕我直言,调用 aSELECT *将必须读取仅调用所需字段的所有字段将更有效。当您查询更大的数据库时,性能可能会受到影响SELECT *

于 2012-06-12T13:14:35.140 回答