【问题标题】:String performacne: PHP vs MySQL [duplicate]字符串性能:PHP vs MySQL [重复]
【发布时间】:2012-03-25 08:23:46
【问题描述】:

在选择查询中使用 MySQL 的 CONCAT() 函数时,是否有任何性能问题需要注意?在返回数据库的结果集后,使用 PHP 进行简单的选择和格式化字符串是否更快/更慢/可以忽略不计?或者是一个更复杂的 SQL 查询,多次调用 CONCAT() 返回一个已经为视图格式化的字符串是更好的方法?

就是这样:

select CONCAT(lastname, ', ', firstname) from people;

更快/更慢/与此没有区别:

<?php
    $query = 'Select lastname, firstname from people';
    ...

    $name = $data['lastname'] . ', ' . $data['firstname']; //OR
    $name = sprintf("%s, %s", $data['lastname'], $data['firstname']);
?>

【问题讨论】:

  • 在打开这样的问题之前做你的基准测试,这很容易
  • 您为什么认为值得花时间去发现它?
  • 不管哪个更快,考虑一下你可以很容易地让多台机器运行 PHP,但要拥有多台 MySQL 机器也需要付出相当大的努力。
  • @zerkms 将其添加为 CW 答案
  • 设计呢?如果以后您决定需要将它们分开会怎样?

标签: php mysql


【解决方案1】:

在几乎所有情况下,使用 SQL 引擎而不是在 Web 服务器上进行过滤和数据按摩,您的情况会更好。

【讨论】:

  • 我知道这是旧的,但为什么呢?能给个链接吗?
  • 好吧,一些搜索会提供来源,但主要区别在于 SQL 引擎不必实例化对象并且已经知道数据的模式。如果您在 Web 服务器上执行此操作(使用 PHP、C# 或其他),您将失去这些好处。虽然实际上,除非您经常这样做,否则这甚至不会引起注意,但在 SQL 中执行此类工作仍然是最佳实践
  • 我明白了,+1 并感谢您的解释(:
【解决方案2】:

除非您计划一次执行数十万次此类操作,否则从性能角度来看,您在哪里执行字符串连接并不重要。可能节省的时间非常少,甚至可能无法衡量。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-11
    • 1970-01-01
    • 2010-09-12
    相关资源
    最近更新 更多