我有2个字段的SQL SELECT
请求:
SELECT `a`, `b` FROM `t`
(a
和b
都是VARCHAR(255)
)
我必须以这种方式连接它们:a (b)
我可以在数据库级别上执行此操作:
SELECT CONCAT(`a`, ' (', `b`, ')') FROM `t`
或者在PHP脚本中:
$result = $resp['a'].' ('.$resp['b'].')';
哪种方式更正确有效?
P.S。我可以在自己的电脑上测试它,但是:
答案 0 :(得分:4)
如果客户端和服务器位于不同的计算机上,那么您应该选择CPU使用率较低的计算机。
与其他工作相比,concat(MySQL或PHP)的成本微不足道。我预计基准会回来时差异不到1%。我的经验法则:不要担心不会给出至少10%的优化。专注于提供更多利益的优化。
在任何一种情况下,结果集中发送的字节数大致相同,因此这不是一个因素。
concat的答案是否适用于其他情况?也许,也许不是。另一个例子是“我应该使用MySQL的ORDER BY
还是PHP的sort()
进行排序?再次,这感觉就像是另一个”掷硬币“的问题。但是......可能有充分的理由在SQL中这样做:假设您正在排序字符串,并且您正在使用排序规则utf8mb4_unicode_520_ci
。这在MySQL中指定是微不足道的。但对于PHP,您必须加载一些库并找出如何使用它。(即便如此,表现可能非常相似。)