哪个更快:数据库级别或应用程序级别的字符串串联


Which is faster: string concatenation on the database level, or the application level?

我在DQL中有一个简单的查询,它选择了3列:

        $qb->select("c.zip_code, c.name, s.state")
           ->where("c.zip_code LIKE :input"); 

我想要的输出是

"[c.zip_code],[c.name],[s.state]"

目前,我正在PHP级别上连接字符串以获得所需的字符串。

在数据库级别上使用CONCAT()函数是否更快?

这并不是优化的真正意义所在。你应该注意哪一个更可读/更实用,我个人会在PHP级别上做这件事。

这类逻辑属于应用程序的显示层,而不是数据库。

我想使用mysql级别为什么我们必须处理这个操作,mysql为它提供了内置函数我的看法MYSQL两者可能需要相同的时间

  1. 我会让数据库来完成繁重的工作并连接数据,虽然这对较小的应用程序可能没有多大意义,但对于较大的应用程序,应用程序脚本可能会开始达到内存阈值。

  2. 如果您需要在不同的地方显示相同的数据,是复制并粘贴代码还是使用相同的查询,会发生什么情况?

最重要的是,现在的性能可能是一样的,但以后的问题,如代码重用、易于更改变得更加重要。

如果有两个大致相等的选择,我相信在这种情况下你已经有了,我将使用风险因素来做出最终决定。

如果我以后需要在应用程序中拆分列,那么在数据库加入应用程序后拆分应用程序中的列即使不是不可能,也是非常昂贵的。因此,在应用程序中加入它们的风险较小,因为我有以任何方式呈现它们所需的数据。

此外,我觉得扩展应用程序层比扩展数据库层更容易。您只需添加应用程序服务器。数据库瓶颈比应用程序瓶颈更难处理。

您可以比MySql服务器更容易地扩展PHP服务器。例如,在AWS上,您可以创建自动缩放条件,以向上/向下缩放PHP服务器实例。