MySQL CONCAT性能与PHP串联性能

Lib*_*aul 0 php mysql sql performance concatenation

我有SQL SELECT2个字段的请求:

SELECT `a`, `b` FROM `t`
Run Code Online (Sandbox Code Playgroud)

ab都是VARCHAR(255)

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

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

SELECT CONCAT(`a`, ' (', `b`, ')') FROM `t`
Run Code Online (Sandbox Code Playgroud)

或在PHP脚本中:

$result = $resp['a'].' ('.$resp['b'].')';
Run Code Online (Sandbox Code Playgroud)

哪种方法更正确,更有效?

PS我可以在自己的计算机上对其进行测试,但是:

  1. 不同硬件上的结果可能有所不同;
  2. 我想知道这两种方法的利弊,因此我可以在自己的项目中应用最佳实践。

Ric*_*mes 5

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

与其他工作相比,concat(MySQL或PHP)的成本微不足道。我希望基准返回的差异小于1%。我的经验法则:不要担心优化不会带来至少10%的收益。专注于带来更多好处的优化。

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

concat的答案是否适用于其他情况?也许吧,也许不是。另一个示例是“我应该使用MySQL ORDER BY还是PHP进行排序sort()?这又像是另一个“抛硬币”的问题。但是...在SQL中这样做是有充分理由的:假设您正在订购字符串,并且正在使用排序规则utf8mb4_unicode_520_ci,这在MySQL中是很简单的,但是对于PHP,则必须加载一些库并弄清楚如何使用它(即使如此,性能也可能非常相似。)