25.09.2012 14:37, Howard Chu пишет:
Roman Rybalko wrote:
Suppose there is a search like (&(attr1=value1)(attr2=value2)), attr1 and attr2 are indexed. As far as I understand, this search fetches objectIDs from the index on attr1, than the objectIDs from the index on attr2, than, according to operation "and" ("&"), objectIDs that present in BOTH sets are determined (using some set-intersection algorithm). When the search is "or" (|(...)(...)), the objectIDs from both sets are joined and duplicates are removed (using some set-union algorithm). If there is no index on attribute, the resulting objectID set is determined by bare iterate-and-compare on all the objects, or so.
That's correct.
Thanks!
Also it's not clear for me how objectID set is determined when there is search on "one" scope? The same when "sub" scope cover not the full database contents but a part of the object tree (suffix: cn=test, search base: cn=test1,cn=test)?
I thought that search with base covering not the full backend suffix (but a partial tree) should work faster, but seems this is not true, even overhead introduced by additional objectID set. Right?