mysql - 插入一个新的数据库条目是否比先检查该条目是否存在更快?

标签 mysql sql sql-server oracle database-optimization

有人告诉我,只运行插入并让插入失败比检查数据库条目是否存在然后在缺少时插入要快得多。

我还被告知大多数数据库都针对读取而不是写入进行了大量优化,所以快速检查不会比慢速插入更快吗?

这是一个预期碰撞次数的问题吗? (IE 仅当条目已存在的可能性很低时才插入速度更快。)它是否取决于我正在运行的数据库类型?就此而言,使用一种不断向我的错误日志中添加插入错误的方法是否是一种不好的做法?

谢谢。

最佳答案

如果插入由于索引违规而失败,它至多比检查记录是否存在慢一点点。 (两者都需要检查索引是否包含该值。)如果插入要成功,那么发出两个查询比发出一个查询要慢得多。

关于mysql - 插入一个新的数据库条目是否比先检查该条目是否存在更快?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8936922/

相关文章:

sql - Redshift ROUND 函数在某些情况下不舍入?

Mysql 将几列转换为一行

MySQL 将邮件列表中的人名组合起来

php - 下拉菜单未出现在以下 php 代码中,但所有其他元素都在表中

php - 如何使用 php 从 MySql 按姓名排序?

sql - 如何为每个外键选择有限数量的行? (以及如何指定关系)

sql-server - 按纬度/经度搜索半径

sql-server - ruby on rails 与现有数据库

mysql - SQL Server 2005 执行 MySQL REPLACE INTO?

mysql - 非空自动递增列 - 但 'is null' 查询返回刚刚插入的行