我正在处理一个表(300多万行,SQL Server) 我需要根据以下两列过滤结果:
<code>
...FromID| ToID |Column5|....
...1001 2001
...1002 2020
...1003 5000
...1001 3000
...2001 1001
</code>
现在,User1可以使用FromID或ToId 1001访问记录。
FromID|ToID
1001|2001
1001|3000
2001|1001
User2可以使用FromID或ToID 1002,1003,3000访问记录
FromID|ToID
1002|2020
1003|5000
1001|3000
最有效的方法是什么? 我是否需要为每个用户创建一个视图?(这适用于企业,用户数量将是 最多100) 感谢。
PS。我的第一个问题。 O.o
答案 0 :(得分:3)
您的访问标准似乎相当随意。 User1获得1001
,user2获得1002
,1003
和3000
,我认为用户3到99也具有任意访问权限。在这种情况下,我建议您创建一个表,在此示例中将其称为useraccess
:
user |accessID
---------------
user1|1001
user2|1002
user2|1003
user2|3000
... |...
现在,当您想知道用户拥有哪些行时,您可以执行以下操作:
SELECT t.FromID, t.ToID, [[other columns you care about]]
FROM yourtable t
JOIN useraccess a ON t.FromID = a.accessID OR t.ToID = a.accessID
WHERE a.user = 'user2'
您可以动态运行该查询,也可以基于它创建视图。视图和直接查询之间的通常权衡将照常应用。
修改:我刚看到您已经有UserRights
表的说明,因此您已完成第1步。