Transforms predicate (attribute = 1 or attribute = 2 or attribute = 3) into
(attribute in (1, 2, 3)
InPredicate is easier to evaluate in both indexed and non-indexed scenarios.
When index is not used then
Predicate
require just a single reflective call
the extract an attribute for
QueryableEntry
while
disjunction of equalPredicate(s) requires one reflective call for each equalPredicate.
The performance is even more significant when tha
AbstractPredicate.attributeName
is indexed.
As then the InPrecicate can be evaluated by just a single hit into index.
When index is used then