哪一个是最快的:“*”或显式列名?

时间:2011-11-23 00:52:07

标签: php mysql

我需要查找是否使用*或仅选择您想要的字段更快。就我而言,将只有一场比赛。

那么哪个更快?这个:

SELECT id, name,description,address,phone,img FROM companies WHERE username = '$cname' LIMIT 1

还是这个?

SELECT * FROM companies WHERE username = '$cname' LIMIT 1

你有什么建议吗?

2 个答案:

答案 0 :(得分:0)

tl; dr它只是无关紧要。

唯一可以使任何区别的情况是,如果有 lot 的额外数据被吸入。额外的开销需要“可检测”结束所有其他网络/磁盘/处理器因素将有所不同:“试一试”,或运行性能分析。此外,即使有其他列,由于它仅限于一条记录,因此谨慎记住: work =努力*数量

我自己更喜欢以前的显式语法,除了一次性交互式查询。 SQL旨在以良好的方式使用。

当然,如果*中的列与所涵盖的列匹配,那么在性能方面应该完全没有区别,因为它们具有相同的“形状”和查询计划。

快乐的编码。

答案 1 :(得分:0)

作为一般规则,只检索所需的数据会更快。我不相信有SELECT *这个查询更快的情况。 (无论如何,它被认为是糟糕的形式。)在许多情况下,差异将是微乎其微的,特别是因为你只是检索一行。但是,如果您的表具有不是指定列之一的BLOB列,或者它有50列,那么差异可能很大。