【问题标题】:Is it more efficient to fetch all DB rows at once in an array then parse or just parse each row?在数组中一次获取所有数据库行然后解析或只解析每一行是否更有效?
【发布时间】:2015-12-03 12:01:44
【问题描述】:

在处理大量 MySQL 条目时,在 PHP 数组中一次获取所有条目还是在 while fetch_assoc 循环中解析每一行更有效?我说的是数十万条记录,这些记录将增长到数百万条,在我真正开始优化数据库之前,我想知道是否有更有效的方法来使用 PHP 解析 MySQL 数据。在分配给另一个数组以插入/更新另一个 MySQL 数据库之前,解析涉及多个验证和格式化。

希望这是有道理的。欢迎您提出意见和建议。

【问题讨论】:

  • 是一个普遍的问题,在某些情况下取决于其他选择中的 php 解析更好。您必须参考具体案例..
  • 大量的数组条目需要大量的内存,分配和释放的开销很大......所以在可能的情况下单独处理每个数据库记录通常会更有效以避免这种情况
  • 这在很大程度上取决于你用它做什么。如果你可以限制你从 MySQL 中提取的内容,你将消除最大的瓶颈。
  • 效率在哪方面?读取大数组可能会更快,但会消耗更多内存。
  • 通常我将分页构建到需要处理非常大的数据集的系统中;分页不仅仅是一个 GUI 元素,它通常也是一种性能解决方案。就像我说的,缩小从 MySQL 中提取的数据量,您可能不必担心其余的方法。

标签: php mysql arrays apache


【解决方案1】:

这在很大程度上取决于您的实现和硬件限制:

场景 1 - 如果内存是瓶颈,您应该一次获取一个。

场景 2 - 如果您不想让连接和事务等待,我会将所有内容刷新到一个数组中,然后执行任何需要进行的计算和验证。

...场景 N ...

在我看来,很难提供适合所有情况的答案。

PS:根据你的cmets,你应该避免一次插入一行,批量插入可以节省很多时间。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-03-06
    • 2010-11-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-19
    • 1970-01-01
    • 2021-03-24
    • 1970-01-01
    相关资源
    最近更新 更多