MySQL CONCAT性能与PHP串联性能

时间:2016-05-15 17:53:10

标签: php mysql sql performance concatenation

我有2个字段的SQL SELECT请求:

SELECT `a`, `b` FROM `t`

ab都是VARCHAR(255)

我必须以这种方式连接它们:a (b)

我可以在数据库级别上执行此操作:

SELECT CONCAT(`a`, ' (', `b`, ')') FROM `t`

或者在PHP脚本中:

$result = $resp['a'].' ('.$resp['b'].')';

哪种方式更正确有效?

P.S。我可以在自己的电脑上测试它,但是:

  1. 不同硬件上的结果可能不同;
  2. 我想了解两种方式的优点和缺点,以便我可以在我的项目中应用最佳实践。

1 个答案:

答案 0 :(得分:4)

如果客户端和服务器位于不同的计算机上,那么您应该选择CPU使用率较低的计算机。

与其他工作相比,concat(MySQL或PHP)的成本微不足道。我预计基准会回来时差异不到1%。我的经验法则:不要担心不会给出至少10%的优化。专注于提供更多利益的优化。

在任何一种情况下,结果集中发送的字节数大致相同,因此这不是一个因素。

concat的答案是否适用于其他情况?也许,也许不是。另一个例子是“我应该使用MySQL的ORDER BY还是PHP的sort()进行排序?再次,这感觉就像是另一个”掷硬币“的问题。但是......可能有充分的理由在SQL中这样做:假设您正在排序字符串,并且您正在使用排序规则utf8mb4_unicode_520_ci。这在MySQL中指定是微不足道的。但对于PHP,您必须加载一些库并找出如何使用它。(即便如此,表现可能非常相似。)