PHP& MySQL Web应用程序 - 选择单个字段(vs)从表中选择*

时间:2015-09-20 21:05:31

标签: php mysql sql query-optimization

我正在努力将原型Web应用程序转换为可以部署的东西。在某些位置,原型具有从表中选择所有字段的查询,尽管只需要一个字段或者查询仅用于检查记录的存在。大多数情况都是单行查询。

我正在考虑将这些查询更改为只获得真正相关的查询,即:

select * from users_table where <some condition>

VS

select name from users_table where <some condition>

我有几个问题:

  1. 这一般是一次有价值的优化吗?
  2. 哪种查询可能会变得特别好?例如,这会改进涉及加入的查询吗?
  3. 除了SQL影响之外,这个变化在PHP级别上是否会很好?例如,返回的数组将更小(单列与多列数据)。
  4. 感谢您的评论。

2 个答案:

答案 0 :(得分:2)

如果我用一个单词回答你的所有三个问题,我肯定会说

答案 1 :(得分:1)

你可能想要的不只是“是”......

  • SELECT *是“不好的做法”:如果你把结果读成PHP非关联数组;然后添加一列;现在数组下标可能已更改。
  • 如果WHERE足够复杂,或者您有GROUP BYORDER BY,并且优化程序决定构建tmp表,则* 可能< / em>导致效率低下:必须使用MyISAM代替MEMORY; tmp表会更笨重;等
  • EXISTS SELECT * FROM ...以0或1回来 - 甚至更简单。
  • 您可以将EXISTS(或合适的等效JOIN)与其他查询结合使用,从而避免额外往返服务器。