日期:2014-05-18  浏览次数:20506 次

判断重复用异常效率高还是多一次搜索效率高?
假设某个表中,Name字段不能重复,而且只要求增加时不增加重复的就行,那么以下两种方法
  1. 按Name字段搜索,如果Count(*)<0,则不执行insert操作。Name字段可能设置了索引,也可能没设置
  2. Name字段设置唯一索引,然后直接
  try { insert} catch (sqlexception) {判断是不是违反唯一性索引} finally
   
  又分两种情况
  1. 表中记录一般小于100条
  2. 表中记录大于1W条或者为10W条之类

  是先判断再插入 还是 用异常捕捉的 效率高?

------解决方案--------------------
一样高。因为都是靠索引定位的。
------解决方案--------------------
用代码测试一下。。

分别用了多久。
------解决方案--------------------
Count(*)<=0? 谁教的sql你都还给他了!

要先判断有没有,用exists,只要存在一个就说明存在了,哪有笨得用count然后再去判断的?你身边全都是一年经验(可能号称2年半)的程序员么?exists这个用法,需要准确使用。

至于你说 try { insert} catch (sqlexception) {判断是不是违反唯一性索引} ,我就搞不懂你如何判断?


------解决方案--------------------
两码子事情,
1.业务逻辑:程序员必须实现这个业务逻辑,实现断言,并UI提示;
2.由于并发问题,存在insert的时候违反约束的情况(不仅仅是你说的name字段)
而这种特定的异常也是设计者能够预见的,应该在异常处理中心的过滤器拦截这个特定的异常,并UI提示,
这些工作是架构师事先就设计好的底层支持,不该让程序员为此编写任何代码