【问题标题】:Should replace be done in mysql or php?替换应该在mysql还是php中完成?
【发布时间】:2012-12-27 21:51:57
【问题描述】:

为了减少下载数据的大小,我想用代码替换数据的一些重复部分,在客户端重新转换。

应该在 mysql 查询中还是在 PHP 中之后进行替换,或者这有关系吗?

mysql内部:

SELECT IF(SUM(val)=16,0,CONCAT("[",GROUP_CONCAT(TRIM(TRAILING ".000" FROM val) ORDER BY itm),"]"))

PHP:

$q=str_replace("1.000","1",$q);
$q=str_replace("[1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1]","0",$q);

【问题讨论】:

  • 下载数据是什么意思?我鼓励你跳过这些手动 cpu 操作,而是在你的 apache 服务器上启用 GZIP。
  • 那么请务必对您的更改进行基准测试,因为它很可能不会做任何事情,只会增加宝贵的 CPU 开销
  • 表演怎么样?您可以使用 chrome 的审计模块来比较之前/之后(f12)
  • 编译较小的数据集似乎需要大约 20-30% 的时间。
  • 是的,您在传输速度方面有什么样的实际性能提升?就是这个问题。

标签: php mysql replace


【解决方案1】:

MySQL 将比 PHP 更快,并使您的代码更简洁。

【讨论】:

    【解决方案2】:

    无论您选择在哪里执行,都不要内联执行。将其包含在一个函数中,这样您就可以在不破坏实际查询的情况下重用和操作逻辑,反之亦然。

    我会投票支持 PHP 代码,因为当您明天切换到 somethingElseDB 时,您不需要想办法在完全不同的 SQL 语法上实现相同的逻辑。我认为 PHP 实现也更容易阅读。

    【讨论】:

    • 将代码放在 mysql 函数中(例程)减慢了查询速度。这是由于例程位于单独的数据库中(需要为多个数据库提供服务),不知道为什么这会减慢它们的速度。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-26
    • 2020-01-15
    相关资源
    最近更新 更多