关于数据库插入的效率的问题
我写了个java程序,用的数据库是java自带的java db,即apache derby,这个嵌入式的数据库,功能完全可以。
我的程序是这样的,向数据表的一列中插入值,但是要求这个列的值是唯一的,所以建立表时写了unique这个关键词。
现在比如要向这一列中插入一个值A,但是不知道这个值是不是已经存在于表中了,现在有两种做法:
1,先查询这一列中是否已经存在值A,若有则不插入,若没有则插入
2,直接执行插入,如果出现插入失败(违反惟一性约束)则表示表中已经有这个值了,如果没有异常则插入成功。
我想让程序在数据库操作上不要浪费太多的CPU时间,我觉得用第2中方法效率更高(因为第一种得先查询再确定是否更新,而第二种只需执行一个更新,但是却可能抛出异常)。
但是在数据库手册上说,如果频繁出现异常的话会比较影响数据库的效率,现在我又想用第一种方法。
我想请问有经验的朋友告诉我,到底用哪种方法效率更高?如有原因则更加感谢。