【问题标题】:In MySQL, is there any performance difference between executing insert with 5 fields and executing insert with 30 fields?在 MySQL 中,执行 5 个字段的插入和执行 30 个字段的插入之间有什么性能差异?
【发布时间】:2020-11-27 20:59:53
【问题描述】:

假设我在 MySQL 中有一个包含 50 列的表,并且我不断地插入和更新寄存器。

通常我在这个表中插入大约 30 或 40 个字段的寄存器,但是这个表开始有太多的信息,当有很多人在上面工作时,我的系统变得有点慢。

所以,我有了将所有内容放在 json 中的一个字段中的想法,然后,当活动停止时,让机器人读取每个寄存器中的每个 json 数据并更新所有字段,这样性能就不会受到影响高活动时间。

这行得通吗?还是插入 5 个字段与 30 个字段相同?谢谢!

【问题讨论】:

  • 你可以在提出这个问题的一小部分时间内进行测试
  • 您甚至可以在更短的时间内回答这个问题。我想你甚至没有理解这个问题,这是我无法在生产中测试的。
  • 我?我不能,但也许其他人可以
  • 请提供SHOW CREATE TABLE 以及INSERTsUPDATEs 中的一些。我们需要查看数据类型、索引和唯一键。 (可能还有其他事情。)速度变慢可能是由太多 索引太少引起的;我需要详细信息。
  • 我的意思是,5 vs 30 可能不是问题。通过更多详细信息,我们可以帮助您找到真正的问题。

标签: mysql json performance insert field


【解决方案1】:

您是否进行了任何基准测试?如果有索引使用您要延迟设置的任何字段,那会有所不同,但可能使所有新行都具有 null 或这些列的默认值可能会使情况变得更糟,而不是更好。如果不涉及索引,我不知道您是否会看到任何显着差异,也许是否涉及 blob 或文本字段。

听起来您确实需要立即进行插入,但只有部分数据对于保持最新至关重要。如果是这种情况,最好只为关键数据创建一个表,而在明细表中为每一行的其余数据创建一个表。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-11-19
    • 2020-09-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多