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

时间:2012-06-12 12:31:56

标签: php mysql database mysql5

  

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

我记得几年前读过,在你想从MySQL表中选择一切的场景中,指定每一列而不是使用懒惰而不是更少的更有效和更好的做法 - SELECT *方法。

我很难找到任何在线证据,所以我不确定它是否适用于较新版本的MySQL和PHP。

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

SELECT * FROM golf_course WHERE id = 2;

3 个答案:

答案 0 :(得分:2)

  • 您的查询将更容易理解
  • 您只会选择所需的列
  • 如果您指定所有列,将更容易删除您以后不想要的列,但如果您没有,并且您希望稍后执行,则需要键入所有列
  • 您可以按照自己的方式排列列,并在代码中引用它们,即使稍后会向表中添加更多列
  • 您可以轻松添加计算,连接
  • 以及其他

表现方面,我不确定

答案 1 :(得分:2)

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

答案 2 :(得分:0)

恕我直言,呼叫SELECT *将必须阅读所有只调用必填字段的字段将更有效。当您查询较大的数据库时,使用SELECT *

可能会影响性能