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

时间:2012-03-06 16:42:38

标签: php mysql string concatenation

我在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()函数在数据库级别上执行此操作会更快吗?

6 个答案:

答案 0 :(得分:6)

这不是优化相关的重点。您应该对哪一个更具可读性/实用性而感到惋惜,我个人会在PHP级别上这样做。

答案 1 :(得分:3)

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

答案 2 :(得分:1)

我想要使用mysql级别 为什么我们必须处理这个操作,其中mysql为此构建函数 我认为MYSQL 两者大概都要花时间

答案 3 :(得分:1)

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

  2. 如果您需要在其他位置显示相同的数据,您是否复制并粘贴代码或使用相同的查询,会发生什么?

  3. 最重要的是,现在的性能可能相同,但后来的问题就像代码重用,易于更改变得更加重要。

答案 4 :(得分:0)

鉴于我认为你在这种情况下有两个相同的选择,我将使用风险因素做出最终决定。

如果我稍后需要在应用程序中拆分列,那么在数据库加入后,如果不是不可能将应用程序中的列拆分,则成本很高。因此,在应用程序中加入它们的风险较小,我需要以任何方式显示它们所需的数据。

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

答案 5 :(得分:-1)

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