【问题标题】:Bulk insert statement with unique constraint具有唯一约束的批量插入语句
【发布时间】:2013-05-07 18:02:37
【问题描述】:

我正在编写一个需要生成唯一代码的 PHP 脚本。这些代码由管理员用户生成,一次 100K。我有一个生成代码的算法,但是重复项进入混合的可能性很小——大约 0.001% 的机会,但它仍然可能导致问题。

我正在寻找运行批量插入语句:

INSERT INTO coupons ( 'code' ) VALUES ('code1'),('code2'),('code3');

这将有 100K 代码。我想知道的是它们是否都是唯一的,除了让我们说 code100 将插入在该代码处停止,还是会继续插入其余的插入并通过警告让我知道。

如果它在第一次复制时最终失败,我该怎么办?性能不是一个大问题,因为它是一个管理区域,我可以关闭这个过程直到它完成。

【问题讨论】:

  • 我最终创建了一个类来检查生成的代码,然后只插入唯一的代码,然后再次开始该过程,直到金额得到满足。在性能方面它很好,因为它可以轻松地在后台插入几百万条记录,而不会让公共网站感到压力。
  • 我也有类似的问题。您能否详细说明您是如何做到这一点的?

标签: mysql sql bulkinsert unique-constraint


【解决方案1】:

如果在批量插入中发现重复,整个插入将失败——不仅仅是重复之后的所有内容。如果性能不是问题并且丢失一些插入也没关系,您可以单独执行每个INSERT 语句。否则,请更新您的算法以在生成代码时检查重复项。

【讨论】:

  • 是的,我能做到。性能不是一个问题,但如果管理员要求 100K 代码,我不能让脚本访问数据库至少 100k 次。
猜你喜欢
  • 2012-09-17
  • 1970-01-01
  • 2022-06-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-08-22
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多