【问题标题】:Which is better way to manipulate data in DB?在数据库中操作数据的更好方法是什么?
【发布时间】:2012-02-28 20:40:46
【问题描述】:

在 MySQL 中也有函数。比如DAY()ASCII()DATEDIFF()等等,功能很多。因此可以使用这些函数进行复杂的查询。并且所有对数据的计算/操作仍将由 MySQL 函数在 MySQL 中完成。而且我可以在 MySQL 已经准备好的 PHP 中得到尽可能精确的查询结果。

但也可以使用 PHP 函数计算/操作数据库中的数据。我的意思是,我使用尽可能简单的 SQL 查询从 DB 中检索数据,然后将其放入数组中,将该数组提取到变量中,直到现在,使用 PHP 函数开始对我的数据进行必要的操作以优化我需要的内容。

所以我的问题是哪种方式更适合使用 DB?我应该尽可能充分地使用 MySQL 的服务器强度来获取尽可能多的现成数据,还是应该使用更多的 PHP 函数来处理来自 DB 的原始数据?

【问题讨论】:

    标签: php mysql database data-retrieval


    【解决方案1】:

    如果您使用 MySQL(或其他非分布式数据库),您可能会考虑在代码中执行此操作。这将减轻数据库服务器的负载,而如今 Web 服务器可完美扩展。您只有 1 台 MySQL 服务器,并且可以扩展到 X 台网络服务器。

    最好的办法是创建一个包装数据库原生函数的辅助类。

    如果您将性能问题留在原处,最好使用可用的函数而不是自己创建它们。

    【讨论】:

    • Ehrm。是什么让您认为可以扩展 Web 服务器,但不能扩展数据库服务器?数据库也具有完美的可扩展性,在数据库中进行计算比在检索所有数据后进行计算在性能方面更好。
    • MySQL 不是分布式数据库。您可以在多个从属服务器上读取,但不能在单个服务器上执行无休止的插入/更新/删除。这就是为什么在您的网络服务器上执行这些操作具有优势的原因。
    • 不过,数据库中的函数的性能远远优于将所有数据传输到 PHP 并从那里进行计算。想想你的答案在应用于 100.000 行上的 MySQL 函数 SUM 时的含义?单独的数据传输比在数据库中计算需要更多的时间。
    • SUM 应该在数据库中完成,或者如果您在 Map/Reduce 设置中有大量数据。然而,最初的问题是关于日期操作。这些都比较简单。这个问题的最佳答案可能与确切目的直接相关。我的回答是指出在网络服务器上执行操作以减轻数据库服务器负载的选项。
    【解决方案2】:

    假设您在任何一种情况下都对数据库执行相同的语句,则总是直接在 MySQL 中运行语句(例​​如函数、存储过程)会比实际运行更快使用任何 PHP 的 MySQL 扩展。

    【讨论】:

      【解决方案3】:

      看看我的问题Text proccessing via Mysql Query。 最好将简单数据存储到数据库中,作为每个数据一行。然后将其发送到 php 并对其进行处理。

      【讨论】:

      • 不是它不是......并且那里的答案说不要让 PHP 进行搜索。
      • 检查我的问题,其他人告诉我最好的方法是将数据存储在 db 中并在 php 中处理主题
      • @bizzare 从不有一种情况,即从 PHP 运行查询会比在 MySQL 本身中运行查询产生更好的性能。这不是意见,这只是事实。您可以讨论在特定上下文中从 PHP 运行查询是否更有利,但这不是 OP 的问题。
      • 好的,谢谢,在我的情况下,我必须将简单的数据存储在数据库中,再次感谢您的关注。
      • @bizzare:不,你问题中的人说相反。也请多多关照您的帖子;你有所有的时间来避免拼写错误和遗漏大写。
      猜你喜欢
      • 2011-05-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-10-23
      • 2013-04-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多