Php SELECT*是否比40列列表快?

Php SELECT*是否比40列列表快?,php,mysql,query-optimization,Php,Mysql,Query Optimization,可能重复: 我有大约45列的表格,但是我需要选择其中的40列 除了我不需要的那5列之外,选择*不会比列出每一列更快吗 在这种情况下,什么更快 我只选了一行 对于数据库来说,键入列的速度更快,而键入*的速度更快。选择更重要的选项:-至少在生产应用程序中不应使用SELECT*。它总是比较慢。仅在开发阶段使用SELECT*,这样对您来说速度更快。顺便说一句,这是糟糕的代码实践。阅读此处的缺点:如果磁盘不在内存中,服务器仍然必须从磁盘读取页面,然后从内存读取到缓存,最后读取到cpu,这些数据将位于同一

可能重复:

我有大约45列的表格,但是我需要选择其中的40列

除了我不需要的那5列之外,选择*不会比列出每一列更快吗

在这种情况下,什么更快


我只选了一行

对于数据库来说,键入列的速度更快,而键入*的速度更快。选择更重要的选项:-

至少在生产应用程序中不应使用SELECT*。它总是比较慢。仅在开发阶段使用SELECT*,这样对您来说速度更快。顺便说一句,这是糟糕的代码实践。阅读此处的缺点:

如果磁盘不在内存中,服务器仍然必须从磁盘读取页面,然后从内存读取到缓存,最后读取到cpu,这些数据将位于同一页面上,除非您有一些非常大的列不想提取

您可以将网络流量从40个字段减少到45个字段,但我怀疑这会有很大的不同。

网络性能提示:

通过仅获取所需内容来最小化流量:

不要使用选择*

还可以考虑DB引擎为您不需要的5个额外列分配结果集内存,并通过网络发送。即使没有性能损失,也会有内存开销,所以只选择您需要的几乎总是更好的。

是的,这就是为什么我认为会这样faster@warface事实并非如此。SELECT*没有什么特别之处,优化器神奇地知道列列表。从..运行EXPLAIN EXTENDED SELECT*。。;显示警告;您将看到优化器将SELECT*转换为SELECT ColA,ColB…很明显,每行五列中的任何内容都是浪费,您不必要地获取这些内容,乘以返回的行数。有鉴于此,使用select*的性能下降应该非常明显。这个问题是否有我们没有看到的部分?如果你只选择了一行,我们所有人在回答/评论这个问题上花费的时间比SELECT*vs SELECT ColA节省的任何时间都多一个数量级…@genesis,Ok。。废物现在是不必要地提取的五列中的任何东西,*1。我在这里看到了这个问题,但是它是如何充分不同的呢?所以即使我选择了所有字段,我也应该使用列列表?它总是比较慢。完全是胡说八道。SELECT*绝不比SELECT listOfAllFieldsHere慢。你们有证据证明这一点吗?我的意思是,任何统计数据表明,在SELECT中列出列的速度应该比*@tomalak geretkal快。如何通过SELECT*选择所有列,而不是只选择45列中的40列?通过网络传输每一行额外的5列——OP表示他不想要的列——会转化为一些延迟。。。他是对的。SELECT*并不总是慢,只是从来没有快过。在每一列上加一个索引怎么样?@Jitamaro:你能澄清一下你的问题吗?所以这都是关于懒散或被决定的问题:P@Warface:如果你的桌子很小,薪水很高,你可能有理由打字*并花时间做其他事情:-不过,我怀疑在这种情况下,你配不上这么高的薪水@凯瑞克:这是关于知识和帮助他人。请参阅Scrummaster解释。我认为我的列列表的字节数大于数据列列表的字节数取决于返回的行数。@genesis如果列出所有列时发送到服务器的字节数大于接收数据的字节数,则这不太可能造成性能问题。