当前位置: 代码迷 >> Sql Server >> 数据权限管理效率低解决方案
  详细解决方案

数据权限管理效率低解决方案

热度:18   发布时间:2016-04-24 09:02:59.0
数据权限管理效率低
表1:记录公司部门架构 (树形);
表2:记录用户可以访问数据的公司编码;
表3:记录公司内的人员信息;

模拟数据:
表1
公司名称       公司编码
母公司            1
子公司1          1-1
1孙子公司1    1-1-1  
1孙子公司2    1-1-2  
1孙子公司3    1-1-3  
子公司2          1-2
2孙子公司      1-2-1  

表2
用户名    公司编码
test          1-1-1
test          1-1-3

表3
公司编码      人员名称
1-1-1            张三
1-1-3            李四
1-                  王五

我现在的解决方式
函数1(用户,公司):判断用户是否有权限查看传入的公司的人员信息,有权限返回1

在分页返回数据时,我会用函数1对每条记录进行权限验证(where dbo.函数1(‘test’,公司编码)=1),这样查询不经过索引,速度很慢。

大家有没有其他比较好的解决方式?





------解决思路----------------------
用INNER JOIN 关联表二表三查询出来就可以了。不要在WHERE后面使用函数。
------解决思路----------------------

  select a.*
  from 表3 a
  join (select distinct 公司編號 from 表2 where 用戶名='test' ) b
  on a.公司編號=b.公司編號
  相关解决方案