【发布时间】:2013-04-01 15:27:30
【问题描述】:
我们有一个group 和user permission 表如下:
Group (group_id,name)
01 | G1
02 | G2
03 | G3
04 | G4
UserPermission (userid,group_id,active)
User1 | 01 | 1
User1 | 02 | 1
User2 | 01 | 1
User2 | 02 | 1
User2 | 03 | 1
User2 | 04 | 1
..
UserN | xx | 1
每个用户都拥有一个组的权限。
但是 UserPermission 表中缺少某些用户的某些权限。
问题是为UserPermission 表中存在的所有用户插入那些缺少的组权限条目。
所以我想出的查询是 (粗)
insert into UserPermission
select distinct userid, '03', 1 from UserPermission
where userid not in (
select userid from UserPermission where group_id = '03'
)
这是因为Group 03 的用户缺少插入权限..
其他组类似。
有没有更好的方法来编写上述查询。如何优化?
【问题讨论】:
-
你在说多少条记录?您是注意到性能问题还是只是一般性地询问?
-
一般......但大约有大约 30 个组和大约 7K-8K 用户。
标签: sql sql-server tsql query-optimization sql-insert