此ldap查询是即时的:
"Find all groups which user1 is not member"
(&
(objectclass=groupOfNames)
(!(member=cn=user1))
)
就像这一样:
"Find these groups"
(&
(objectclass=groupOfNames)
(|(cn=group1) (cn=group2) (cn=group3) ... )
)
但是,将它们组合起来会导致几分钟的处理!
"From these groups, find all which the user1 is not a member"
(&
(objectclass=groupOfNames)
(!(member=cn=user1))
(|(cn=group1) (cn=group2) (cn=group3) ... )
)
我不知道为什么ldap服务器会在组合查询上窒息。有什么想法可以做什么?
如果有帮助,服务器是Novell eDirectory。
答案 0 :(得分:1)
很奇怪,需要几分钟才能得到结果。你有超过几百万件物品吗?
一种可能性是,搜索1只在树的一个分区内查找,在另一个分区中搜索2,然后两者结合起来显然会同时查看两者,只要你问的服务器有至少在这些分区上读取副本。
另外,您可以尝试以下变体:
(&
(&
(objectclass=groupOfNames)(!(member=cn=user1))
)
(&
(objectclass=groupOfNames)(|(cn=group1) (cn=group2) (cn=group3) ... )
)
)
它应该为您提供您最初查询的答案,但有点简单。
如果这没有帮助,您应该在查询的服务器上执行ndstrace,并查看他正在使用查询执行的操作。
简而言之: