MySQL CONCAT性能与PHP串联性能


MySQL CONCAT performance vs. PHP concatenation performance

我有一个SQL SELECT请求,其中有两个字段:

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

ab都是VARCHAR(255)

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

我可以在数据库级别上完成:

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

或者在PHP脚本中:

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

哪种方式更正确、更有效?

附言:我可以在自己的电脑上测试,但是:

  1. 不同硬件上的结果可能不同
  2. 我想知道这两种方法的优缺点,这样我就可以在我的项目中应用最佳实践

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

与其他工作相比,concat(MySQL或PHP)的成本很小。我希望一个基准能够回到1%以内。我的经验法则:不要担心不会给出至少10%的优化。专注于提供更多好处的优化。

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

concat的答案适用于其他情况吗?也许,也许不是。另一个例子是"我应该使用MySQL的ORDER BY还是PHP的sort()进行排序?同样,这感觉像是另一个"掷硬币"的问题。但是……在SQL中这样做可能有一个很好的理由:假设你正在排序字符串,并且你正在使用排序规则utf8mb4_unicode_520_ci。在MySQL中指定这一点很简单。但对于PHP,你必须加载一些库并弄清楚如何使用它。"。(即便如此,性能可能非常相似。)