今天在项目中发现了这样一个问题:每次数据提效后执行的很慢[大概要等上三十秒左右,B/S结构,服务器在企业内部]。
比如:在表table1中有如下数据[用户a在某些模块中拥有这些权限]  ID     userName ModuleName[实际中用ID表示]
   1        a      A模块查询
   2        a      B模块录入
   3        a      C模块修改
   4        a      D模块删除现在需要修改用户"a"的权限,假如现在要给用户"a"加上“A模块录入”的权限
以前的做法是:先将用户"a"的权限全部删除,后然重新写入。  ID     userName ModuleName[实际中用ID表示]
   1        a      A模块查询  
   2        a      B模块录入
   3        a      C模块修改
   4        a      D模块删除
   5        a      A模块录入小弟觉得这样做好像有点不合理。本在存在的也要删除后再写入。这样不是增加了数据操作的时间吗?
请大虾们给个好的建议。注:每次传过来的参数是该用户所拥有的所有权限的ID及该用户ID。

解决方案 »

  1.   

    先查询传过来的用户所拥有的所有权限的ID及该用户ID,看看是否已经存在,如果存在了就不insert了,如果没有就insert了。
    这没有什么好说的。
    如果每次把以前的都delete,在insert刚delete的,本身就是有问题的。
    如果像我们的系统这样,有的用户权限数量在几万个,岂不是要产生大量的redo,效率底下.
      

  2.   

    其实就是一个update/insert的问题,没有匹配的就insert。做个条件判断