假设我们有一个 MySQL 后端,其表的主键使用 UNIQUE 属性定义。我们正在接收来自多个分布式系统的数据,这些系统都具有相同/相似的实现。
在某些时候,我们将尝试批量插入例如 1000 万个文档行,但我们只想在不违反唯一约束的情况下存储数据,哪种方法会更快/被认为可以..?
例如
try {
//...try and insert the document
} catch(MySQLIntegrityConstraintViolationException e) {
//..do nothing, since this is already stored in the database
//move on to the next one..
}
或者
//we try to find the document...
if(!documentFound) {
//we did not find a document with this id, so we can safely insert it..
//move on to the next one...
}
在我的脑海中,我猜测在这两种情况下,我们尝试插入的 id 都必须“找到”,因为我们必须验证唯一约束,但是就其速度而言,两者中的哪一个被认为或多或少是可以的?
附带问题:对于 mongoDB,例如 Mysql 的答案/结果(例如速度)是否相同?