【问题标题】:Which way would be faster to process?哪种方式处理速度更快?
【发布时间】:2011-02-04 07:55:59
【问题描述】:

小背景信息

目前我有一个脚本,可以将网站上的页面(不受我控制)解析为游戏的 mysql 数据库(获取游戏内攻击日志)。我最近决定要更快地升级它,并且我已经完全重新编码了解析器,以便它将数据存储到一个数组中。现在基于我的问题:

我的第一个版本目前有大约 50 列,每个单位时间一个用户丢失/离开的数量以及其他一些零碎的内容 - 如果用户实际上没有丢失一个单元或没有不要失去那种类型的单位。现在,如果我要对数组进行 JSON 编码并将其粘贴到数据库中

1) 插入时会比当前更快吗?

2) 假设我需要在首页重新获取该数据并显示 100 个结果(只需要一个摘要,因此第一种方式只选择 3 列),如果我要执行第一种方式,我可以显示一个选择的数据,while循环它,这会比我从数据库中选择它,然后解码并处理它更慢还是更快?

(另外,如果您知道更好的方法,请不要犹豫:)——或者我应该将两者混合使用)

【问题讨论】:

标签: php mysql json


【解决方案1】:

问题不在于插入,每条记录只执行一次 - 而是在阅读中。您将失去所有 MySQL 的数据处理能力,因为您只会在一个大文本字段中放置一个 JSON 块。

与从数据库中获取所有记录并在内存中循环相比,能够使用 MySQL 查询从数据库中选择所需记录的性能要高得多。

【讨论】:

  • 是的,但例如,我有一个排行榜页面,它选择数据库中的每一行/列,这个数据库大约有 30k 行大。然后我必须选择所有这些并使用它。这不比在文本字段的一部分中有一个 json var 慢吗?我在想 Id 用于摘要等的东西 Id 放在自己的列中(如用户名等),而 json 将用于大量数据。
  • (忘了通知你^_^)也感谢拼写编辑,虽然是我的主要语言,但英语很糟糕。
  • 在 MySQL 中拥有这一切的美妙之处在于,您可以使用聚合来计算分数,对结果进行排序,并且只返回排行榜的前“n”个领导者。您不想向页面发送太多数据进行处理。
  • 不幸的是,我认为我不能使用聚合函数(因为计算非常复杂,并且需要根据我的 php 代码中的静态数组计算跨行)。我可能只倾向于 json 路线,因为制作一个包含大量列的新表的任务听起来不是很有趣呵呵。好的,那么我会坚持只使用 mysql。感谢您的回复。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-02-11
  • 1970-01-01
  • 1970-01-01
  • 2014-03-11
  • 1970-01-01
相关资源
最近更新 更多