DT Piotr Wadas wrote:
Hello, I have
10 000 objects with attributeA=john
and
100 of these objects has also attributeB=mary
both attributes are indexed.
Does it make any difference between
(&(attributeA=john)(attributeB=mary))
vs.
(&(attributeB=mary)(attributeA=john))
I bet it is better to exclude john-matched objects from the set of 100 mary-matched objects, than exclude 100 mary-matched objects from the set of 10 000 john-matched objects, is that right?
Yes, but internally, when we perform an AND on two sets, we re-order them as needed, so it doesn't matter which one was larger coming in. It would be pretty stupid not to.
In other words - does it make sens to order complicated filters to match possible low-volume results from the left, and high-volume sets on the right? This, of course, apply to AND filters only.
The only time you'll see any big benefit to ordering is if one of your terms yields an empty set. In that case, the evaluation can be terminated early without invoking any AND processing at all.