是否插入新数据库条目比检查条目是否存在更快?

Hol*_*orf 7 mysql sql sql-server oracle database-optimization

我曾经被告知,运行插入并让插入失败比检查数据库条目是否存在然后插入(如果它丢失)更快.

我还被告知,大多数数据库都经过大量优化,无法读取阅读而不是写入,因此快速检查不会比慢速插入快吗?

这是预期碰撞次数的问题吗?(IE只有在条目已经存在的可能性很小的情况下插入才会更快.)它是否依赖于我正在运行的数据库类型?就此而言,有一种方法会不断向我的错误日志中添加插入错误,这是不好的做法吗?

谢谢.

Ted*_*opp 7

如果插入因索引违规而失败,则最多比检查记录存在的速度慢一些.(两者都需要检查索引是否包含值.)如果插入成功,则发出两个查询要比发出一个查询慢得多.