【问题标题】:MySQL: Quicker to check/insert duplicate row, or insert and ignore failure?MySQL:更快地检查/插入重复行,或者插入并忽略失败?
【发布时间】:2011-03-06 12:00:21
【问题描述】:

MySQL (MyISAM)

通常会尝试添加重复的行(由于唯一索引,这是不允许的)。

哪个更快?

1) 检查行是否存在。如果没有,则插入。

2) 无论如何都插入行。如果失败已经存在,则忽略它。

【问题讨论】:

  • 我假设选项 2 是 INSERT IGNORE ...(而不是生成错误并抑制它)

标签: mysql


【解决方案1】:

好吧,我不是 MySQL 专家,但选项 1 需要两个步骤/周期。选项 2 只是迈出了一步。选项1有两个返回值(1看有没有数据,2一般是插入的id),选项2只返回1个值。

我总是选择选项 2。

【讨论】:

    【解决方案2】:

    如果您使用 MyISAM,1) 并不是一个真正的选择,因为您需要使用 MyISAM 不支持的事务。

    【讨论】:

    • +1 用于提出并发问题。您可以使用 MyISAM 和表锁来执行选项 1,但这又增加了两个步骤。当两个进程尝试同时添加时,在没有任何类型的互锁的情况下执行选项 1 会在某些时候失败。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-11-14
    • 1970-01-01
    • 2020-05-19
    • 1970-01-01
    • 1970-01-01
    • 2021-01-10
    • 2016-06-15
    相关资源
    最近更新 更多