这更像是一个正确性问题。假设我的数据库中有一个包含主键列的表。在我的 DAO 代码中,我有一个名为 insertRow(string key) 的函数,如果表中不存在该键,该函数将返回 true 并使用该键插入一个新行。否则,如果使用该键的行已经存在,则返回 false。让 insertRow 首先检查键的存在还是继续执行插入并捕获重复键错误是更好还是更坏?或者在单个 select 语句上保存是否是一种微不足道的优化,甚至不必担心?
所以在 sudo 代码中:
boolean insertRow(String key){
//potentially a select + insert
if(select count(*) from mytable where key = "somekey" == 0){
insert into mytable values("somekey")
return true;
}
return false;
}
或
boolean insertRow(String key){
try{
//always just 1 insert
insert into mytable values("somekey")
return true;
} catch (DuplicateKeyException ex){}
return false;
}
最佳答案
插入行,捕获重复键错误。我个人的选择
我认为这可能会表现得更好,具体取决于抛出异常的成本与两次访问数据库的成本。
只有通过测试这两种情况,您才能确定
关于mysql - 测试数据库中重复键的最佳方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1002222/